绊脚石乃是进身之阶。

elasticsearch出现查询慢如何排查问题

匿名 | 发布于2017年12月22日 | 阅读数:16204

这两天线上的es服务调用es集群出现了好几次查询慢的记录,我在日志中记录了es查询返回的took还有方法执行耗时,发现took中竟然有返回30多秒的。。。 不用说rpc客户端肯定也超时了。
 
但是当我把执行慢的语句拿到es里面运行,仅仅几毫秒就返回了。而且我去es的慢查询日志也没有找到那些好几秒甚至十几秒的查询。
 
出现查询慢的那段时间是早上7点前后,系统qps不高 (单台机器20/s以下)。不过服务出现了几次老年代GC,es集群没有出现。
 
这种现象如何排查呢?
已邀请:

kennywu76 - Wood

赞同来自: ELKer code4j

如果记录的30s耗时是ES response里的took给出的,那就是查询耗时了这么久。 一个可能的原因是当时ES压力大,查询线程都在忙,Search threadpool的队列里有堆积了。 根据经验,ES端的慢查询记录的是查询从开始执行到结束之间的时间,在线程池队列里等待的时间不计算在内。
 
所以排查一下慢查询时间点,服务器的CPU, load average消耗情况,是否有资源消耗高峰,另外查询线程池的队列大小也有必要做监控。

要回复问题请先登录注册