1、es集群的索引分片设计不合理,导致分片数很多,监控压力也增大,严重影响到了es集群的稳定性。只能临时关闭监控索引,或者调整监控频率
1)关闭监控
PUT /_cluster/settings?pretty
{
"persistent": {
"xpack.monitoring.collection.enabled": false
}
}
2)监控频率调整 动态参数
调整es的监控频率
PUT /_cluster/settings
{
"persistent" : {
"xpack.monitoring.collection.interval" : "30s"
}
}
调整kibana获取监控数据的频率,需要和es监控频率一致
xpack.monitoring.min_interval_seconds: 30
2、当集群的配置增加的时候,需要对es节点调整静态参数,在启动过程中es分片启动很慢则:
设置在节点中最大允许同时进行分片分布的个数,根据es的cpu等合理设置启动分片的数量
PUT /_cluster/settings
{
"persistent": {
"cluster": {
"routing": {
"allocation.node_concurrent_recoveries": 32
}
}
}
}
3、优化write线程和search线程池
任何参数的调优都必须依据es本身的配置来调整
1)write线程池的调优
thread_pool.write.size:cpu核数+1
thread_pool.write.size: 9
thread_pool.write.queue_size: 1000
2)search线程池调优
queue_size允许控制没有线程可执行的pending请求队列的初始大小
auto_queue_frame_size设置控制在调整队列之前进行测量的操作数。它应该足够大,以至于单个操作不会不适当地偏向计算
target_response_time是一个时间值设置,指示线程池队列中任务的目标平均响应时间。如果任务通常高于此时间,则将线程池队列调低以使任务被拒绝。
min_queue_size设置控制queue_size可调整的最小数量
max_queue_size设置控制queue_size可调整的最大数量
thread_pool.search.size: 13 (最大cpu核数*3/2+1)
thread_pool.search.queue_size: 500
thread_pool.search.min_queue_size: 8
thread_pool.search.max_queue_size: 800
thread_pool.search.auto_queue_frame_size: 1500
thread_pool.search.target_response_time: 3s
4、设置熔断比例的大小
indices.fielddata.cache.size: 30%
indices.breaker.fielddata.limit: 40%