线上三台集群部署的集群占用CPU过高,均接近100%,下面分析一下问题根源以及解决思路。
Top查看CPU内存情况
CPU内存情况ES进程133248的CPU占用达到117.2%,内存占用19.1G
查看CPU占用高的线程curl -XGET "http://*:9200/_nodes/hot_threads"
ESCPU占用高的线程
cpu占用比较高时,ES正在执行lucene的排序或查询任务
查看ES正在执行任务curl -XGET "http://*:9200/_tasks?pretty"
ES正在执行任务
发现3个节点有近160个任务正在执行,其中任务占100个左右,写入任务占30个左右
总结
综上分析,ES占用CPU过高是由于正在执行任务太多导致;
业务上的原因是:后台大量定时任务需要查询ES,并且查询过程中涉及到反查,所以比较耗费ES性能。
参考资料
Task management API | Elasticsearch Guide [8.2] | Elastic
Elasticsearch CPU高排查思路
elasticsearch服务器CPU100%分析
网友评论