行动是治愈恐惧的良药,而犹豫、拖延将不断滋养恐惧。

ElasticSearch 同一个query查询响应时间差异大?

Elasticsearch | 作者 kaiser1992 | 发布于2020年09月15日 | 阅读数:203

一、问题描述
  1. ​ 同一个Query DSL请求,多次请求,偶现响应时间超大的情况,比如大部分took在100ms以下,但是会存在偶现大于200ms的情况;
  2. ES集群处于空闲状态,集群配置高(8台实机,每台机器内存182g,40核CPU,1T的SSD),每台机器配置两个Node实例(JVM 30G),每个Node实例一个索引分片,剩余的内存足够索引文件缓存;
  3. 索引数据量500w+,大小在25G左右

 二、疑问点:
  1. 采用Profile分析,在took大于200ms的情况,每个shard级别的cost也不高,网上查资料说是profile只会统计Query阶段shard的cost,协调节点merge以及Fetch的过程耗时不会统计,但是集群空闲不会导致这些耗时过高把?
  2. ES协调节点分发到数据节点的请求是否可以设置超时?(查资料表示不会生效)

 
图片示例:
  1. 正常示例[b]
    QQ图片20200915133332.png
    [/b]
  2. cost过高示例

           
QQ图片20200915133654.png

 
 
补充:
    有点怀疑响应结果中的took值是否准确了,如下图,发现在某一个节点上query阶段和collector阶段的耗时相加和竟然比took要大,不太理解了。
QQ图片20200915165819.png

 
 
 
已邀请:

zqc0512 - andy zhou

赞同来自: kaiser1992

scroll 指定路由。
 

kaiser1992 - 呆呆的工程师

赞同来自:

有大佬能帮忙看看么

要回复问题请先登录注册