# Does anyone use connection pooling in ElasticSearch8.5? How to use it?

**URL:** https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974
**Category:** Elasticsearch
**Created:** [November 13, 2023, 9:41am UTC](https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974 "2023-11-13T09:41:54Z")
**Posts on this page:** 18
**Page:** 1

<div class="post-metadata">

### Author: ![maoqingjue](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/maoqingjue/32/123322_2.png) [@maoqingjue](https://discuss.elastic.co/u/maoqingjue)
#### Post date: [November 13, 2023, 9:41am UTC](https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974/1 "2023-11-13T09:41:54Z")

</div>

Does anyone use connection pooling in Elasticsearch8.5? How to use it?

---

<div class="post-metadata">

### Author: ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)
#### Post date: [November 13, 2023, 9:59am UTC](https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974/2 "2023-11-13T09:59:15Z")

</div>

You don't need a connection pool.  
If you are working in Java, just create one single instance for the client.

---

<div class="post-metadata">

### Author: ![maoqingjue](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/maoqingjue/32/123322_2.png) [@maoqingjue](https://discuss.elastic.co/u/maoqingjue)
#### Post date: [November 13, 2023, 10:34am UTC](https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974/3 "2023-11-13T10:34:41Z")

</div>

But under high concurrency, some queries take about 5 seconds

---

<div class="post-metadata">

### Author: ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)
#### Post date: [November 13, 2023, 10:36am UTC](https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974/4 "2023-11-13T10:36:40Z")

</div>

I believe the java client has a built in connection pool.

> [@maoqingjue](#):
>
> But under high concurrency, some queries take about 5 seconds

That makes you draw the conclusion that this is a client limitation and not a Elasticsearch server limitation?

---

<div class="post-metadata">

### Author: ![maoqingjue](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/maoqingjue/32/123322_2.png) [@maoqingjue](https://discuss.elastic.co/u/maoqingjue)
#### Post date: [November 13, 2023, 10:39am UTC](https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974/5 "2023-11-13T10:39:18Z")

</div>

Hello, which is the built-in connection pool? Thanks

---

<div class="post-metadata">

### Author: ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)
#### Post date: [November 13, 2023, 10:47am UTC](https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974/6 "2023-11-13T10:47:24Z")

</div>

I am not familiar with the internals. Have you looked at [the code](https://github.com/elastic/elasticsearch-java)?

---

<div class="post-metadata">

### Author: ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)
#### Post date: [November 13, 2023, 11:05am UTC](https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974/7 "2023-11-13T11:05:38Z")

</div>

What is the `took` value in the response object when this is happening?

---

<div class="post-metadata">

### Author: ![maoqingjue](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/maoqingjue/32/123322_2.png) [@maoqingjue](https://discuss.elastic.co/u/maoqingjue)
#### Post date: [November 13, 2023, 11:17am UTC](https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974/8 "2023-11-13T11:17:01Z")

</div>

SearchResponse resp = elasticsearchClient.search(request, JsonData.class)  
This line of code I monitored, when the concurrency is 1000, this line of code goes from the first 30 milliseconds to the last 6000 milliseconds.

---

<div class="post-metadata">

### Author: ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)
#### Post date: [November 13, 2023, 11:40am UTC](https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974/9 "2023-11-13T11:40:35Z")

</div>

Can you alter the code to check the response for the `took` value? It would be useful to see if this increases as the concurrency goes up or whether it stays flat. If it is increasing with increased concurreny, that could indicate that Elasticsearch is taking longer to respond and it may not be a client efficiency issue.

---

<div class="post-metadata">

### Author: ![maoqingjue](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/maoqingjue/32/123322_2.png) [@maoqingjue](https://discuss.elastic.co/u/maoqingjue)
#### Post date: [November 13, 2023, 11:55am UTC](https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974/10 "2023-11-13T11:55:51Z")

</div>

It took basically 9 milliseconds when the concurrency was 100, and it was about 50 milliseconds when the concurrency was 200.

---

<div class="post-metadata">

### Author: ![maoqingjue](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/maoqingjue/32/123322_2.png) [@maoqingjue](https://discuss.elastic.co/u/maoqingjue)
#### Post date: [November 13, 2023, 11:57am UTC](https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974/11 "2023-11-13T11:57:25Z")

</div>

It took basically 9 milliseconds when there were 100 concurrencies, and about 50 milliseconds when there were 200 concurrencies, so the overall query took from the first 30 milliseconds to the last 6000 milliseconds.

---

<div class="post-metadata">

### Author: ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)
#### Post date: [November 13, 2023, 12:32pm UTC](https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974/12 "2023-11-13T12:32:12Z")

</div>

I am not sure I understand. Are you talking about the request latency in the client or the `took` value from the response?

At 100 concurrent requests, what is the average measured latency in the client and what is the average of the `took` value extracted from the response payload?

At 200 concurrent requests, what is the average measured latency in the client and what is the average of the `took` value extracted from the response payload?

At 1000 concurrent requests, what is the average measured latency in the client and what is the average of the `took` value extracted from the response payload?

---

<div class="post-metadata">

### Author: ![maoqingjue](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/maoqingjue/32/123322_2.png) [@maoqingjue](https://discuss.elastic.co/u/maoqingjue)
#### Post date: [November 14, 2023, 7:50am UTC](https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974/13 "2023-11-14T07:50:35Z")

</div>

In the process of concurrency from 100 to 1000, the average value of tok is from 10 milliseconds to 60 milliseconds, and the entire ElasticSearcClient request is from 50 milliseconds to 6000 milliseconds.

---

<div class="post-metadata">

### Author: ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)
#### Post date: [November 14, 2023, 8:17am UTC](https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974/14 "2023-11-14T08:17:15Z")

</div>

@dadoonet may correct me here, but I think took does not necessarily include the time the request is queued up within the cluster. As you are increasing the concurrency I believe it is therefore possible that the search queue in the cluster will grow and increase end-to-end latency. This could therefore still indicate that the cluster is the bottleneck. Do you have monitoring installed on the cluster so you can check the search queue size over time?

---

<div class="post-metadata">

### Author: ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)
#### Post date: [November 14, 2023, 8:52am UTC](https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974/15 "2023-11-14T08:52:37Z")

</div>

I think it's correct although I don't know the exact internals.

@maoqingjue what is the output of:

```auto
GET /_cat/nodes?v
GET /_nodes/stats

```

---

<div class="post-metadata">

### Author: ![maoqingjue](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/maoqingjue/32/123322_2.png) [@maoqingjue](https://discuss.elastic.co/u/maoqingjue)
#### Post date: [November 14, 2023, 11:03am UTC](https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974/16 "2023-11-14T11:03:25Z")

</div>

The client co.elastic.clients.elasticsearch.ElasticSearchClient is blocked. I looked at the underlying source code.

---

<div class="post-metadata">

### Author: ![maoqingjue](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/maoqingjue/32/123322_2.png) [@maoqingjue](https://discuss.elastic.co/u/maoqingjue)
#### Post date: [November 14, 2023, 11:09am UTC](https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974/17 "2023-11-14T11:09:13Z")

</div>

ElasticSearchClient is a blocking client

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [December 12, 2023, 11:09am UTC](https://discuss.elastic.co/t/does-anyone-use-connection-pooling-in-elasticsearch8-5-how-to-use-it/346974/18 "2023-12-12T11:09:53Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
