Elasticsearch:CPU使用率间歇性陡增解决方案

「问题描述」:

观察到Elasticsearch集群的CPU使用率监控每间隔10分钟会飙高一次:

问题排查」:

阿里云方抓取到在CPU使用率监控指标飙高时,有merge线程占用了比较高的CPU,排查点有二:

  • 是否存在定时merge的任务
  • 配置的索引生命周期中是否存在定期的merge操作

解决方案」:

1.获得到某个索引的Edit setting如下:

{

  "index.blocks.read_only_allow_delete""false",

  "index.query.default_field": [

    "*"

  ],

  "index.write.wait_for_active_shards""1",

  "index.refresh_interval""1s",

  "index.indexing.slowlog.level""info",

  "index.indexing.slowlog.threshold.index.warn""200ms",

  "index.indexing.slowlog.threshold.index.trace""20ms",

  "index.indexing.slowlog.threshold.index.debug""50ms",

  "index.indexing.slowlog.threshold.index.info""100ms",

  "index.indexing.slowlog.source""1000",

  "index.translog.durability""async",

  "index.unassigned.node_left.delayed_timeout""5m",

  "index.priority""1",

  "index.number_of_replicas""0",

  "index.lifecycle.name""aliyun_default_ilm_policy",

  "index.apack.cube.following_index""false",

  "index.routing.allocation.include._tier_preference""data_cold,data_warm,data_hot",

  "index.search.slowlog.level""info",

  "index.search.slowlog.threshold.fetch.warn""500ms",

  "index.search.slowlog.threshold.fetch.trace""50ms",

  "index.search.slowlog.threshold.fetch.debug""100ms",

  "index.search.slowlog.threshold.fetch.info""200ms",

  "index.search.slowlog.threshold.query.warn""1s",

  "index.search.slowlog.threshold.query.trace""100ms",

  "index.search.slowlog.threshold.query.debug""200ms",

  "index.search.slowlog.threshold.query.info""500ms",

  "index.merge.policy.segments_per_tier""30",

  "index.merge.policy.max_merged_segment""512mb"

}

2.通过setting来看,是有merge相关设置的,另外,可以通过GET /_nodes/stats命令,搜索结果中的merges,有这个线程运行的次数,可以在节点CPU打高的前后,看下merges线程运行的次数,主要是看数据节点,目前来看merges的次数挺高的,如果不希望CPU这么频繁的打高,可以对以下两个参数进行调整,降低CPU使用率:

1."index.merge.policy.segments_per_tier""30" : 每个tier允许的segement 数,注意这个数要大于上面的at_once数,否则这个值会先于最大可操作数到达,就会立刻做merge,这样会造成频繁

2."index.merge.policy.max_merged_segment""512mb"  : 超过多大size的segment不会再做merge,默认是5g.

「方案使用成果」:

将"index.merge.policy.segments_per_tier"设置为45,观察CPU使用率监控如图,可以观察到CPU使用率有明显的下降趋势。

将"index.merge.policy.max_merged_segment"设置为256mb后,观察CPU使用率监控如图,可以观察到CPU使用率有明显的下降趋势。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值