I'm looking for suggested values of threadpools possibly based on deployments size. More specifically, is there any suggested configuration for threadpools for a deployment like this?
6 nodes Elasticsearch 5.6 deployment with these jvm mem characteristics:
"mem": {
"heap_init_in_bytes": 6685720576,
"heap_max_in_bytes": 6407192576,
"non_heap_init_in_bytes": 2555904,
"non_heap_max_in_bytes": 0,
"direct_max_in_bytes": 6407192576
},
All nodes have role data and ingest.
I'm asking because we are start getting es_rejection_exception for several operations (mostly bulk, index, and search), which are related to threadpool queue size. This is how threadpools are configured on each of the 6 nodes:
"thread_pool": {
"force_merge": {
"type": "fixed",
"min": 1,
"max": 1,
"queue_size": -1
},
"fetch_shard_started": {
"type": "scaling",
"min": 1,
"max": 48,
"keep_alive": "5m",
"queue_size": -1
},
"listener": {
"type": "fixed",
"min": 10,
"max": 10,
"queue_size": -1
},
"index": {
"type": "fixed",
"min": 24,
"max": 24,
"queue_size": 200
},
"refresh": {
"type": "scaling",
"min": 1,
"max": 10,
"keep_alive": "5m",
"queue_size": -1
},
"generic": {
"type": "scaling",
"min": 4,
"max": 128,
"keep_alive": "30s",
"queue_size": -1
},
"warmer": {
"type": "scaling",
"min": 1,
"max": 5,
"keep_alive": "5m",
"queue_size": -1
},
"search": {
"type": "fixed",
"min": 37,
"max": 37,
"queue_size": 1000
},
"flush": {
"type": "scaling",
"min": 1,
"max": 5,
"keep_alive": "5m",
"queue_size": -1
},
"fetch_shard_store": {
"type": "scaling",
"min": 1,
"max": 48,
"keep_alive": "5m",
"queue_size": -1
},
"management": {
"type": "scaling",
"min": 1,
"max": 5,
"keep_alive": "5m",
"queue_size": -1
},
"get": {
"type": "fixed",
"min": 24,
"max": 24,
"queue_size": 1000
},
"bulk": {
"type": "fixed",
"min": 24,
"max": 24,
"queue_size": 200
},
"snapshot": {
"type": "scaling",
"min": 1,
"max": 5,
"keep_alive": "5m",
"queue_size": -1
}
}
Is there any room for improvement by expanding the threadpools? Thanks in advance.