文章目录

  • 问题
  • 解放方案
    • 删除无用的索引
    • 查看有索引分片
    • 索引分片调整
    • 定期删除过期索引
  • 参考文章

问题

用的是阿里云Elasticsearch,数据节点3个:

节点CPU时高时低,很不稳定

解放方案

内存和cpu使用率偏高的情况,可以从以下四个方面考虑:

  1. 降低并发写入量、删除下无用的索引释放资源(尤其是.monitor开头的日志索引,可设置保留周期)
  2. 考虑清理索引缓存, POST/索引名/_cache/clear?fielddata=true
  3. 考虑升配集群扩容实例规格
  4. 查看有索引分片是否合理

删除无用的索引

考虑清除.monitor开头的索引监控数据,也可以删除一个月以前的一些日志索引,注意删除索引同时也会删除数据。


后续可以补充一个定时任务:去获取并删除超过一定时间的索引。

查看有索引分片

从索引列表中可以看到索引的分片是5,而目前集群数据节点数是3,这会导致节点之间存在不均衡的负载分布,那么具有更多分片的节点的资源使用率将更高,并且瞬时平均负载将高于其他节点。这也是导致CPU不稳定的主要原因。
所以考虑优化分片数调整为3,或者3的倍数,让数据均摊到每个数据节点上。

索引分片调整


ES默认的分片配置就是5-1,需要添加两个参数来修改:

"number_of_shards": "3",//设置主分片为3
"number_of_replicas": "1"//设置副分片为1

整个配置文件如下:

{"order": -2147483647,"index_patterns": ["*"],"settings": {"index": {"search": {"slowlog": {"level": "info","threshold": {"fetch": {"warn": "200ms","trace": "50ms","debug": "80ms","info": "100ms"},"query": {"warn": "500ms","trace": "50ms","debug": "100ms","info": "200ms"}}}},"refresh_interval": "10s","unassigned": {"node_left": {"delayed_timeout": "5m"}},"indexing": {"slowlog": {"level": "info","threshold": {"index": {"warn": "200ms","trace": "20ms","debug": "50ms","info": "100ms"}},"source": "1000"}},"number_of_shards": "3","number_of_replicas": "1"}}
}

修改后之影响之后创建的索引,之前创建的索引需要等过期清理。
修改后可以看到一些新建的索引已经生效,但新建Jaeger的索引还是5-1

Jaeger是做链路追踪的工具,使用elasticsearch作为存储引擎。可能Jaeger去创建ES索引的时候会指定分片,所以导致阿里云自动创建索引的配置失效了。
在ES上设置template/default为索引添加默认设置

PUT _template/default
{"index_patterns" : ["*"],"order" : 1,"settings": {"number_of_shards": "3","number_of_replicas": "1"}
}

配置后执行可以看到之后的Jaeger创建的索引都是3主分片

定期删除过期索引

package mainimport ("context""fmt""time""github.com/olivere/elastic/v7"
)type Elk struct {Client     *elastic.Client
}const (url      = "http://es-cn-xxxxxxxx.elasticsearch.aliyuncs.com:9200"user     = "elastic"password = "123456"
)func main() {elk, err := NewElk(url, user, password)if err != nil {panic(err)}ctx := context.Background()columns := []string{"index", "creation.date"}expireTime := time.Now().AddDate(0, 0, -14).Unix()indexs, err := elk.Client.CatIndices().Columns(columns...).Do(ctx)if err != nil {panic(err)}for _, index := range indexs {if index.CreationDate < expireTime {_, err := elk.Client.Delete().Index(index.Index).Do(ctx)if err != nil {panic(err)}}}fmt.Println(indexs)
}func NewElk(url, user, password string) (*Elk, error) {Es, err := elastic.NewClient(elastic.SetSniff(false),elastic.SetURL(url),elastic.SetBasicAuth(user, password),)if err != nil {panic("New ELK client error:" + err.Error())}e := &Elk{Client:     Es,}return e, nil
}

参考文章

ElasticSearch索引模板的使用简介
Elasticsearch集群规模和性能调优

elasticsearch集群CPU不稳定的问题排查相关推荐

  1. 高可用 Elasticsearch 集群 21 讲

    课程内容 开篇词 | 如何构建一个高可用.低延迟的 Elasticsearch 集群? 我们从 1.x 开始使用 Elasticsearch ,发展到现在大大小小的集群有 5000+,最大的集群物理主 ...

  2. 400+节点的 Elasticsearch 集群运维

    作者:Anton Hägerstrand 翻译:杨振涛 Meltwater每天要处理数百万量级的帖子数据,因此需要一种能处理该量级数据的存储和检索技术. 从0.11.X 版本开始我们就已经是Elast ...

  3. 从400+节点ElasticSearch集群的运维中,我们总结了这些经验

    墨墨导读:国外一家舆情监控公司Meltwater每天处理的数据非常庞大--在高峰期需要索引大约300多万社论文章,和近1亿条社交帖子数据.其中社论数据长期保存以供检索(可回溯到2009年),社交帖子数 ...

  4. 400+节点的Elasticsearch集群运维

    墨墨导读:本文将分享我们所学到的经验.如何调优Elasticsearch,以及要绕过的一些陷阱. Meltwater每天要处理数百万量级的帖子数据,因此需要一种能处理该量级数据的存储和检索技术. 从0 ...

  5. Elasticsearch集群监控指标学习

    学习Elasticsearch有一段时间了,参考网上的一些资料,对于Elasticsearch集群状态一些重要监控指标数据在此进行小结,以加深理解. Elasticsearch集群监控状态指标分三个级 ...

  6. ElasticSearch集群故障案例分析: 警惕通配符查询

    最近ElasticSearch集群出现了 https://elasticsearch.cn/article/171 文章中描述的情况,现在转载全文警示下自己. 原文地址:https://elastic ...

  7. ELK教程1:ElasticSearch集群的部署

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 在分布式系统中,应用数量众多,应用调用链复杂,常常使用ELK作为日志收集.分析和展示的组件.本 ...

  8. 完美避坑!记一次Elasticsearch集群迁移架构实战

    作者介绍 李猛(ynuosoft),Elastic-stack产品深度用户,ES认证工程师,2012年接触Elasticsearch,对Elastic-Stack开发.架构.运维等方面有深入体验,实践 ...

  9. 【Elastic Stack学习】ELK日志分析平台(一)ELK简介、ElasticSearch集群

    * ELK简介: ELK是Elasticsearch . Logstash.Kibana三个开源软件的缩写.ELK Stack 5.0版本之后新增Beats工具,因此,ELK Stack也改名为Ela ...

最新文章

  1. 2013-3-10日记
  2. 基于Selenium2+Java的UI自动化(6)-操作Alert、confirm、prompt弹出框
  3. c语言不允许对数组的大小做动态定义,数组,C语言程序设计课件,与中南大学出版社教材相配套.ppt...
  4. 我收集的鼠标指针样式-比较经典
  5. 三十四、数据仓库的建模
  6. matlab 维纳滤波恢复运动模糊,运动模糊恢复专题
  7. C语言main()主函数执行完毕后是否会再执行一段代码
  8. 三个参数之和、积的取值范围问题
  9. python能干什么-Python这么火,学完到底能干什么
  10. numpy中的broadcast
  11. Tomcat—如何在Windows 7中修改Tomcat的端口号
  12. 数字图像处理课后习题汇总
  13. 删除非字母字符python_python字符串如何去掉英文字母以外的字符
  14. Excel如何按照单元格背景颜色排序
  15. 电脑重装系统苹果电脑开不了机的原因分析
  16. Android——Intent总结
  17. 中移物联网在车联网场景的 TiDB 探索和实现
  18. CSMA/CD协议详解
  19. vs 2019生成类试图
  20. 菜鸟都应该知道的倾斜摄影测量知识

热门文章

  1. P3887 [GDOI2014]世界杯
  2. 模板 - 最小割(常见最小割题型技巧总结)
  3. LaTeX 各种命令,符号汇总(全)
  4. PMP挂靠一年多少钱?
  5. java-net-php-python-springboot视频分享系统计算机毕业设计程序
  6. 我的世界启动器HMCL的下载
  7. 虚拟机Linux安装图形化界面
  8. 0708-Pen Brush
  9. 微信小程序使用github协作
  10. Win10如何安装Microsoft Print to pdf打印机