三人行必有我师

elasticsearch 奇怪的慢查询

Elasticsearch | 作者 taoyantu | 发布于2023年08月01日 | 阅读数:1536

    目前发现了一个很奇怪的现象,产生慢查询。    部署了elasticsearch 7.4版本的集群,集群大概20台服务器,每台机器上启动3个节点,启动内存占用30G,服务器配置很高,都是相同配置的。
    索引是按照天生成,比如 access-log-2023.07.31 。索引大小大约为1T数据。
    目前发现的问题是,当使用Kibana的 discover查看索引数据时会偶尔出现慢查询问题,比如查看最近2天的数据,有时候就会卡在某个机器的shard上,一直等到请求体中的 "timeout"设置的"120000ms",这个shard才会响应。一个索引中,有的节点分片用30秒就能返回,有的分片会用2分钟(一直等到120s,但是还是可以响应,打印出完整的慢查询日志)。当我把慢的shard迁移到其他服务器,查询就会变快,再迁移回原节点,查询可能也会正常,感觉像是激活了这个shard的。ES所有节点的日志都没有报错,只有慢查询日志。
   各位大神是否遇到过这种奇怪的现象?是什么原因造成的
已邀请:

kin122

赞同来自:

分两个方向吧,一个是打印整个请求,使用profile进行分析,看看有没有不合理的耗时占比;一个看看资源使用,是不是缓存或者io的高使用

Charele - Cisco4321

赞同来自:

“当我把分片迁移到其他服务器的时候,查询就会变快”,
就是说,你排除了是由于查询的复杂,或者数据量大的这些原因,是吗?
 
看看在慢的时候,ES节点上有没有相关的错误或者警告的日志呢?
单从你描述的来看,看不出原因

I_Like

赞同来自:

猜测:当时那个节点资源比较紧张
那么就需要监控案发时,该节点的资源情况
 
有用的信息太少了,没法直接判断问题原因
 

God_lockin

赞同来自:

慢的节点是一直慢还是只是在特定时间段慢?检查一下那个节点:
1. 堆栈、CPU等基础配置以及事故索引的配置、索引
  * 之前出现过某个节点的配置写错了,节点配置和索引配置都和其他人不一样
2. 故障发生的时候的io/内存
3. 用_tasks接口检查一下当时节点在做什么
 

yangmf2040

赞同来自:

shard多大啊?看着像资源争用导致的,120s,那个节点 thread_pool 有排队的情况没

要回复问题请先登录注册