1.概述
转载:https://bbs.huaweicloud.com/forum/thread-69707-1-1.html
2.场景
-
场景1 内存参数配置不合理。
-
场景2 bulk提交量过大,导致内存被堆满。
-
场景3 客户端IP,端口配置问题。
-
场景4 写入时指定DOC ID,导致读IO高。
-
场景5 bulk队列积压,请求线程被拒绝。
-
场景6 热分片问题。
-
场景7 集群不稳定,大量分片迁移和恢复。
-
场景8 部分实例长时间不断的full gc,导致实例处于假死状态。
-
场景9 磁盘IO瓶颈。
-
场景10 查询业务占用大量的资源。
-
场景11 索引段合并占用大量的IO资源。
-
场景12 分词器设计不合理。
3.问题排查步骤
-
登录集群,检查集群是否green,是否有分片转移或者实例恢复。如果有分片转移或实例恢复中,待分片转移成功或恢复完成。
-
如果有大量的分片转移可以调小分片转移并发数为2,或等待集群分片迁移完成。
-
查看集群是否存在告警,如堆内存使用超过阈值的告警。检查服务级别和实例级别的参数设置,
确认其GC_OPTS参数设置为30G
,且-Xms的值和-Xmx参数值相同。若内存设置合理,则需要采集该节点日志进行分析进一步排查。同时与ISV确认bulk提交方式是否正确,一次bulk提交5MB左右。 -
查看bulk写入线程队列情况,是否存在积压的情况。
-
如果出现队列积压的问题,需要进一步进行排查分片是否分布的均匀,是否存在热分片的问题。
-
与业务侧确定正在写入的索引名称,查看这个索引的分片分布,如果存在阻塞的实例上同时分布着写入索引的多个分片,需要设置
total_shards_per_node
参数,使得分片均匀分布。 -
进一步查看机器IO,执行命令iostat –dxm 1,查看机器IO情况,如果出现IO瓶颈,需进一步进行确认:
-
- 是否有大量的查询业务,导致IO被占用,需要控制业务查询并发,同时配置EsClient;
-
- 写入是否指定了DOC ID,导致读IO很高,建议使用ES自动分配的doc ID;
-
- 是否在进行大量的索引段合并,如果不是SSD盘,建议修改索引段合并线程为1;
-
- 确实已经达到磁盘IO瓶颈,需要进行扩容。
- 内存达到瓶颈,查看内存满问题定位处理方法。