悟空,拿我的打狗棒来

elasticsearch全文搜索不定时出现耗时异常情况

Elasticsearch | 作者 battlescars | 发布于2019年09月25日 | 阅读数:3121

集群基本配置以及部署过程
集群:  2个节点
版本: 7.2.0
JVM堆大小: 31GB
节点内存: 256GB
主分片和副本数: 1/1
磁盘大小: 2TB+
部署方式: docker
主机系统: debian 8
docker部署配置:
docker run -d --name esnode01 \
-v /home/workspace/elasticsearch/data:/usr/share/elasticsearch/data \
--ulimit memlock=-1:-1 \
--ulimit nofile=65535:65535 \
-p 9200:9200 \
-p 9300:9300 \
-e node.name=esnode01 \
-e node.data=true \
-e node.master=true \
-e network.publish_host=$ip01 \
-e discovery.seed_hosts=$ip02:9300 \
-e cluster.initial_master_nodes=esnode01,esnode02 \
-e cluster.name=es-docker-cluster \
-e bootstrap.memory_lock=true \
-e "ES_JAVA_OPTS=-Xms31g -Xmx31g" \
-e http.cors.enabled=true \
-e http.cors.allow-origin=* \
--restart=always \
docker.elastic.co/elasticsearch/elasticsearch:7.2.0
索引mappings:
{
"mapping": {
"properties": {
"question": {
"type": "text"
},
"update_time": {
"type": "date"
}
}
}
}
索引文档数量: 11k
其他: 
1. 其中question字段为中文文本
2. 开启了慢查询日志
  "index.search.slowlog.level": "debug",
  "index.search.slowlog.threshold.fetch.debug": "5ms",
  "index.search.slowlog.threshold.query.debug": "1ms",
3. 搜索没有很高的并发
查询语句:
POST /index_name/_search
{
"from": 0,
"size": 50,
"query": {
"match": {
"question": text
}
}
}

问题描述:
大部分查询的耗时在10-20ms左右,但是会不定期出现耗时100ms-900ms,设置更多的情况,搜索返回的took字段也是对应的100-900ms

分析定位:
1. 从kibana的监控上看没有很高的索引频率,没有很长的gc时间,没有很高的系统负载,没有非常多的segments,也没有非常高的query和fetch延迟
2.慢查询日志中也没有对应的耗时很长的日志记录
3. 尝试使用profile api对应的慢查询返回的profile信息中的耗时非常短

迫切期望各位es大佬给予建议,或者问题定位思路,非常感谢!!!
已邀请:

mysia

赞同来自: battlescars

看下Index Memory - Elasticsearch (MB)是否有波动

trycatchfinal

赞同来自: battlescars

es 偶发查询缓慢
这个帖子可以参考下

medcl - 今晚打老虎。

赞同来自: laoyang360

将数据节点和 master 节点分离,两个节点的集群实在是担忧。

battlescars

赞同来自:

@mysia index memory的情况如下图,某一次耗时很长的搜索大概发生的时间是15:28:00

要回复问题请先登录注册