elasticsearch集群CPU不稳定的问题排查
文章目录
- 问题
- 解放方案
- 删除无用的索引
- 查看有索引分片
- 索引分片调整
- 定期删除过期索引
- 参考文章
问题
用的是阿里云Elasticsearch,数据节点3个:
节点CPU时高时低,很不稳定
解放方案
内存和cpu使用率偏高的情况,可以从以下四个方面考虑:
- 降低并发写入量、删除下无用的索引释放资源(尤其是.monitor开头的日志索引,可设置保留周期)
- 考虑清理索引缓存, POST/索引名/_cache/clear?fielddata=true
- 考虑升配集群扩容实例规格
- 查看有索引分片是否合理
删除无用的索引
考虑清除.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不稳定的问题排查相关推荐
- 高可用 Elasticsearch 集群 21 讲
课程内容 开篇词 | 如何构建一个高可用.低延迟的 Elasticsearch 集群? 我们从 1.x 开始使用 Elasticsearch ,发展到现在大大小小的集群有 5000+,最大的集群物理主 ...
- 400+节点的 Elasticsearch 集群运维
作者:Anton Hägerstrand 翻译:杨振涛 Meltwater每天要处理数百万量级的帖子数据,因此需要一种能处理该量级数据的存储和检索技术. 从0.11.X 版本开始我们就已经是Elast ...
- 从400+节点ElasticSearch集群的运维中,我们总结了这些经验
墨墨导读:国外一家舆情监控公司Meltwater每天处理的数据非常庞大--在高峰期需要索引大约300多万社论文章,和近1亿条社交帖子数据.其中社论数据长期保存以供检索(可回溯到2009年),社交帖子数 ...
- 400+节点的Elasticsearch集群运维
墨墨导读:本文将分享我们所学到的经验.如何调优Elasticsearch,以及要绕过的一些陷阱. Meltwater每天要处理数百万量级的帖子数据,因此需要一种能处理该量级数据的存储和检索技术. 从0 ...
- Elasticsearch集群监控指标学习
学习Elasticsearch有一段时间了,参考网上的一些资料,对于Elasticsearch集群状态一些重要监控指标数据在此进行小结,以加深理解. Elasticsearch集群监控状态指标分三个级 ...
- ElasticSearch集群故障案例分析: 警惕通配符查询
最近ElasticSearch集群出现了 https://elasticsearch.cn/article/171 文章中描述的情况,现在转载全文警示下自己. 原文地址:https://elastic ...
- ELK教程1:ElasticSearch集群的部署
点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 在分布式系统中,应用数量众多,应用调用链复杂,常常使用ELK作为日志收集.分析和展示的组件.本 ...
- 完美避坑!记一次Elasticsearch集群迁移架构实战
作者介绍 李猛(ynuosoft),Elastic-stack产品深度用户,ES认证工程师,2012年接触Elasticsearch,对Elastic-Stack开发.架构.运维等方面有深入体验,实践 ...
- 【Elastic Stack学习】ELK日志分析平台(一)ELK简介、ElasticSearch集群
* ELK简介: ELK是Elasticsearch . Logstash.Kibana三个开源软件的缩写.ELK Stack 5.0版本之后新增Beats工具,因此,ELK Stack也改名为Ela ...
最新文章
- 2013-3-10日记
- 基于Selenium2+Java的UI自动化(6)-操作Alert、confirm、prompt弹出框
- c语言不允许对数组的大小做动态定义,数组,C语言程序设计课件,与中南大学出版社教材相配套.ppt...
- 我收集的鼠标指针样式-比较经典
- 三十四、数据仓库的建模
- matlab 维纳滤波恢复运动模糊,运动模糊恢复专题
- C语言main()主函数执行完毕后是否会再执行一段代码
- 三个参数之和、积的取值范围问题
- python能干什么-Python这么火,学完到底能干什么
- numpy中的broadcast
- Tomcat—如何在Windows 7中修改Tomcat的端口号
- 数字图像处理课后习题汇总
- 删除非字母字符python_python字符串如何去掉英文字母以外的字符
- Excel如何按照单元格背景颜色排序
- 电脑重装系统苹果电脑开不了机的原因分析
- Android——Intent总结
- 中移物联网在车联网场景的 TiDB 探索和实现
- CSMA/CD协议详解
- vs 2019生成类试图
- 菜鸟都应该知道的倾斜摄影测量知识