开发者社区> 问答> 正文

ES实例的CPU使用率过高,如何排查?

已解决

ES实例的CPU使用率过高,如何排查?

展开
收起
阿里云服务支持 2022-12-13 09:57:52 473 0
2 条回答
写回答
取消 提交回答
  • 官方回答

    常见原因:

    集群写入过高、存在无用索引。

    索引缓存占用资源。

    集群规格太低。

    单节点CPU高,负载不均。

    解决方案:

    降低并发写入量,删除无用的索引释放资源,尤其是以.monitoring-*为前缀的监控索引,可设置其保留周期,具体操作请参见配置Monitoring监控日志

    建议使用POST /索引名/_cache/clear?fielddata=true命令,清理缓存。

    建议升配集群,具体操作请参见升配集群

    优化分片负载,设置主+副分片为集群数据节点的整数倍,详细信息请参见shard分配不均,如何调整?

    另外如果存在慢查询,可以看下慢查询日志,看下查询的方式是否存在复杂的聚合查询,或者有大批量的数值型byte、short、integer、long字段做term查询时,在构造docid*的bitset很耗时,会影响查询速度。如果该数值字段没有range和agg聚合需求,建议改为keyword类型字段。

    2022-12-13 10:07:47
    赞同 展开评论 打赏
  • 一名在读研究生程序猿,欢迎大家指教,我们共同进步!
    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换成对应的实例名称
    
    2022-12-13 10:09:44
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
作为全球云计算的领先者,阿里云为全球230万企业提供着云计算服务,服务范围覆盖200多个国家和地区。我们致力于为企业、政府等组织机构提供安全可靠的云计算服务,给用户带来极速愉悦的服务体验。
问答排行榜
最热
最新

相关电子书

更多
RDS SQL Server CPU高使用率性能优化 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载