Index Thread Pools

My objective is to calculate how many index requests can a elasticsearch cluster hold in it's queue before starting rejecting it.

My elasticsearch cluster(v6.8) has 8 data nodes of r5.xlarge instance i.e. 4 vCPU's.
In the Elasticsearch documentation it is mentioned:

For index/delete operations. Thread pool type is fixed with a size of # of available processors, queue_size of 200. The maximum size for this pool is 1 + # of available processors.

So, according to me each node has a thread pool of 4 as number of processors is 4. The queue size for the same is 200.

So for 8 nodes -> assuming all threads are busy servicing an index request -> My cluster can hold no. of nodes * queue size number of index requests in queue before it starts rejecting i.e. 8*200 = 1600.

Is my understanding correct?

I believe the answer depend on how many shards each bulk indexing request targets as each shard will be a separate task that is queued up. If the indexing data is not uniformly distributed across the cluster you may see rejections eeven though the queue on some less loaded nodes are not full. have a look at this old blog post for further discussion. I believe it is still largely applicable.

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