使用 shuf 来打乱一个文件中的行或是选择文件中一个随机的行。

查询量大时,总有少量请求响应时间长,怎样避免呢?

Elasticsearch | 作者 wangxinrong | 发布于2020年08月03日 | 阅读数:2506

比如一个比较简单的查询,根据用户id查询这个用户的信息,正常情况下都是几ms的响应时间。
当qps到达几千每秒时,总有0.1%不到的比例的查询,响应时间会达到十几或者几十ms,如果是对响应时间要求高的情况,可能就超时了。
服务器资源给的非常充足,每台服务器的cpu使用率连10%都不到,仍然会有这种情况。这样的话即使再加服务器,也没法解决问题。
这种情况可能是什么原因呢,有办法通过调优吗,达到在服务器负载不高的情况下,接近100%的快速响应。
已邀请:

JingSQ - 招聘Elasticsearch内核研发工程师

赞同来自: byx313

做到100%的无毛刺是很难的,有时候网络抖动、GC、磁盘等都会出现毛刺的。
 
要解决这个办法,最有效的就是使用补偿查询的方式,当某个请求耗时超过一定比率后,比如超过5ms还未返回,则立即再发出一条一模一样的请求,哪个优先返回用哪个。

viewsite

赞同来自:

这种情况一般是查询额外触发了缓存去缓存大量数据,比如 查询5次 会触发缓存, 聚合也会触发缓存,腾讯云Elasticsearch Service 服务做过这方面的内核优化 。

wangxinrong

赞同来自:

我想确认下这个响应时间长,会不会是ssd盘的性能抖动引起的,似乎没有什么好的办法能证明这一点。

要回复问题请先登录注册