Elasticsearch实例cpu使用率高及查找频繁执行的任务问题排查思路
一. 问题背景与现象
1.某局点Elasticsearch集群,单个ES数据实例cpu使用率持续很高,导致客户入库业务持续阻塞
如下图,单实例cpu使用率达到了5106%
二.原因分析
1. 使用如下ES命令看是哪类任务导致实例cpu使用率高(写入还是查询)
curl -XGET --tlsv1.2 --negotiate -k -u : "https://ip:port/_cat/tasks?detailed&v"|grep EsNode1@ip
需把EsNode1@ip换成对应cpu高的实例名称
2. 根据查询结果,第一列全部是data/write/bulk任务(bulk表示写入任务),说明为写入业务造成此实例cpu使用率高。最后一列中会显示具体的索引名称及分片编号,如index[index_name][16]中,index_name表示索引名称,16表示分片编号。因此可以判断是index_name索引的写入任务量过大导致实例cpu使用率过高
3. 除了写入造成cpu高的情况,若第一列都打印data/read/search,说明是查询业务造成此实例cpu使用率高,最后一列会显示具体索引名称及查询语句,根据相应信息找到对应业务进行整改即可
以下为一条数据的打印为例:
第一列打印indices:data/read/search表明是查询业务,,indices[]中打印了索引名称,红框内source[]中会打印完整的search查询语句。根据以上信息即可找到相应的业务及查询语句,进一步判断是否是业务不合理或查询并发过高导致的此问题
三.解决办法
1. 将相应造成cpu使用率高的业务先停止
针对写入业务需整改此索引的业务,将一批bulk写入数据大小控制在15mb以内,写入并发量过大的情况下需同时减小写入并发
针对查询业务需分析器对应的查询语句,看是否存在查询语句不合理的情况,如大size聚合查询,大量的wildcard查询,进行相应整改,查询并发量过大的情况下需同时减小查询并发
2. 为加快恢复,可先重启cpu使用率高的ES实例
- 点赞
- 收藏
- 关注作者
评论(0)