常见原因:
集群写入过高、存在无用索引。
索引缓存占用资源。
集群规格太低。
单节点CPU高,负载不均。
解决方案:
降低并发写入量,删除无用的索引释放资源,尤其是以.monitoring-*为前缀的监控索引,可设置其保留周期,具体操作请参见配置Monitoring监控日志
建议使用POST /索引名/_cache/clear?fielddata=true命令,清理缓存。
建议升配集群,具体操作请参见升配集群
优化分片负载,设置主+副分片为集群数据节点的整数倍,详细信息请参见shard分配不均,如何调整?
另外如果存在慢查询,可以看下慢查询日志,看下查询的方式是否存在复杂的聚合查询,或者有大批量的数值型byte、short、integer、long字段做term查询时,在构造docid*的bitset很耗时,会影响查询速度。如果该数值字段没有range和agg聚合需求,建议改为keyword类型字段。
1.看是哪类任务导致实例cpu使用率高(写入还是查询)
curl -XGET --tlsv1.2 --negotiate -k -u : "https://127.0.0.1:24100/_cat/tasks?"|grep EsNode1@ip
需把EsNode1@ip换成对应的实例名称
如下图,第一列全部是data/write/bulk任务(bulk表示写入任务),说明为写入业务造成此实例cpu使用率高
2.看相应任务,找到对应索引
如果是写入任务导致,执行以下命令
curl -XGET --tlsv1.2 --negotiate -k -u : "https://127.0.0.1:24100/_tasks?nodes=EsNode1@ip&human&actions=*data/write/bulk&detailed"
需把EsNode1@ip换成对应的实例名称
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。