前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【最佳实践】巡检项:Elasticsearch Service(ES)节点熔断诊断

【最佳实践】巡检项:Elasticsearch Service(ES)节点熔断诊断

原创
作者头像
shanizeng
修改于 2023-03-28 03:45:55
修改于 2023-03-28 03:45:55
2.3K00
代码可运行
举报
文章被收录于专栏:腾讯云顾问腾讯云顾问
运行总次数:0
代码可运行

节点熔断的含义

Elasticsearch Service 提供了多种官方的熔断器(circuit breaker),用于防止内存使用过高导致 ES 集群因为 OutOfMemoryError 而出现问题。每个熔断器都指定了它可以使用多少内存的限制。此外,还有一个父级熔断器,它指定可以跨所有熔断器使用的内存总量。

官方熔断机制的一个不足是仅跟踪那些经常会出问题的请求来预估内存的使用,而无法根据当前节点的实际内存使用状态,来限制请求的内存使用或触发熔断。在腾讯云 ES 中,开发了针对 JVM OLD 区内存使用率的自研熔断器来解决这个问题。

腾讯云 ES 的自研熔断器监控 JVM OLD 区的使用率,当节点使用率超过85%时开始拒绝写入请求,若 GC 仍无法回收 JVM OLD 区中的内存,在节点使用率到达90%时将拒绝查询请求

定位节点熔断的原因

1、判断当前节点熔断的情况

监控项“集群熔断次数”可直观查看到集群是否发生了熔断,old gc 次数也可以反映出集群熔断情况

日志中可查询到“data toor large"关键字

2、定位集群熔断可能的原因

(1)出现请求突增

(2)有大聚合或者时间跨度大的查询

(3)磁盘利用率超水位

根据相应的问题提供解决方案

1、出现请求突增

通常是有查询请求突增引发熔断,针对读多写少的场景,可以:

1.严格遵循索引单分片30g~50g的设计原则;

2.在遵循单分片设计原则的前提下,预测出索引最终大小,并根据集群节点数设计索引分片数量,使分片尽量平均分布在各个节点;

3.条件允许的情况下可设置更多的副本分片分担查询压力;

4.设置集群冷热分离,对于部分查询实时性要求不高的索引数据,可定期迁移至冷节点,尽可能提升热节点的规格。

2、优化查询语句

1.避免查询 all 索引;

2.避免使用多索引的关联查询方式,尽可能在初始时设计好数据结构

3.避免使用多层嵌套查询,或者复杂的查询操作,比如 join、nested、parent-child 等等

3、磁盘利用率超水位

定期进行磁盘清理或扩容磁盘

熔断日志解读

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[o.e.m.j.JvmGcMonitorService] [1576592439000051711] [gc][16309166] overhead, spent [869ms] collecting in the last [1.3s]

以上日志表示,集群在最近1.3s 内花费869ms 做 gc 收集,检查时间和占比都在正常范围内

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[o.e.m.j.JvmGcMonitorService] [1576592439000051711] [gc][young][16309166][2415160] duration [869ms], collections [1]/[1.3s], total [869ms]/[17.4h], memory [11.7gb]->[11gb]/[15.8gb], all_pools {[young] [730.1mb]->[2.9mb]/[865.3mb]}{[survivor] [83.9mb]->[84.7mb]/[108.1mb]}{[old] [10.9gb]->[10.9gb]/[14.9gb]}

 以上日志分段解读

[gc][young][16309166][2415160] duration [869ms], collections [1]/[1.3s],本次进行新生代回收,是第16309166次检查,从 jvm 启动至今的第2415160次,总耗时869ms,从上次检查至今已有1次,已过去1.3s;

memory [11.7gb]->[11gb]/[15.8gb],所有内存在回收前是11.7gb,回收后是11gb,总内存为15.8gb;

{[young] [730.1mb]->[2.9mb]/[865.3mb]},young 区在回收前是730.1mb,回收后是2.9mb,young 区的总内存为865.3mb;

{[survivor] [83.9mb]->[84.7mb]/[108.1mb]}{[old] [10.9gb]->[10.9gb]/[14.9gb]},survivor 和 old 区在经过回收后,内存基本不变,是因为内存是在 young 区多轮回收后进入 survivor,survivor 满后进入 old 区

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ES异常排查之-熔断
出现熔断说明当前节点 JVM 使用率过高,通过熔断保护进程不会 OOM。此时可以通过适当降低读写、清理内存等方法降低节点负载,也可以通过升级节点内存规格来提高 JVM 大小。
ES小助理
2022/05/25
3.8K0
集群熔断和健康值非绿场景分析排查
原理:Elasticsearch的请求的数据超过JVM堆内存设置,引发的集群异常。
zhqwang
2024/06/28
1510
【最佳实践】巡检项:Elasticsearch Service(ES)集群 bulk 拒绝诊断
bulk 即集群索引写入,bulk 拒绝表示集群当前节点的 bulk 请求超出了节点的默认 queue 容量,默认容量为1024。出现 bulk 拒绝时,说明集群已经达到了 bulk 操作处理能力的上限,或集群出现异常,应及时排查出现 bulk 拒绝的原因并解决,否则会影响业务的 bulk 操作,甚至出现数据丢失情况。
shanizeng
2022/04/08
1.9K0
【最佳实践】巡检项:Elasticsearch Service(ES)集群健康值
文档中涉及到的所有 DSL 命令,都可以通过 kibana 的 dev tools 执行
shanizeng
2022/04/01
4.4K0
如何监控Elasticsearch
Elasticsearch是一个开源的分布式文档存储和搜索引擎,可以近乎实时地存储和检索数据结构,它很大程度上依赖于Apache Lucence--一个用Java编写的全文搜索引擎。
大蟒传奇
2018/07/31
1.6K0
如何监控Elasticsearch
【最佳实践】巡检项:Elasticsearch Service(ES)集群热点现象
注:在分片分布均匀的情况下,如果查询请求中指定了routing参数,也会导致查询请求聚集于某一部分分片,造成请求不均匀。
shanizeng
2022/08/22
1.5K0
「ES 排障指南」之 Elasticsearch 集群异常状态分析 —— 集群 YELLOW
本文描述问题及解决方法同样适用于 腾讯云 Elasticsearch Service(ES)。
岳涛
2023/11/16
6K72
「ES 排障指南」之 Elasticsearch 集群异常状态分析 —— 集群 YELLOW
干货满满丨万字超全 ElasticSearch 监控指南
导语:本文详细介绍了 ElasticSearch 如搜索性能指标、索引性能指标、内存使用和垃圾回收指标等六类监控关键指标、集群和索引两类大盘配置示例,以及 ES 在查询性能差、索引性能差的两种典型问题场景下详细的原因、排查方式和解决方案,同时也介绍了如何通过 Prometheus 监控搭建可靠的监控系统,详尽全面,推荐给大家,也欢迎各位一起交流。
腾讯云可观测平台
2024/03/15
1.9K0
干货满满丨万字超全 ElasticSearch 监控指南
elasticsearch的熔断机制与熔断场景
circuit breakers(熔断器)是elasticsearch对于自身防止资源被过度消耗的一种保护机制。主要是为了防止业务elasticsearch时,资源被过度消耗,引起JVM的OutOfMemoryError。防止elasticsearch服务的JVM堆内存负载过高而导致服务不可用。通过熔断器的参数阈值约束,elasticsearch集群在响应客户端请求时当超过预设阈值后就会停止接受新的请求,并返回响应的错误信息。保护集群的稳定性。为此elasticsearch提供了多种熔断器。
空洞的盒子
2023/11/08
3.1K2
如何做好 Elasticsearch 性能指标监控
声明:本文是较早的一篇关于Elasticsearch性能指标监控的博文,内容总结全面,作者 Emily Chang,原文地址:https://www.datadoghq.com/blog/monitor-elasticsearch-performance-metrics,由杨文波同学翻译。
大数据技术架构
2019/09/29
1.7K0
如何做好 Elasticsearch 性能指标监控
Elasticsearch 生产环境集群部署最佳实践
在生产环境搭建或维护 Elasticsearch 集群和个人搭建集群的小打小闹有非常大的不同。
铭毅天下
2021/03/22
3K0
Elasticsearch 生产环境集群部署最佳实践
Elasticsearch JVM 堆内存使用率飙升,怎么办?
这是系列文章的第四篇,主要探讨:Elasticsearch JVM 堆内存使用率飙升,怎么办?
铭毅天下
2022/04/06
4K0
Elasticsearch JVM 堆内存使用率飙升,怎么办?
腾讯Elasticsearch海量规模背后的内核优化剖析
Elasticsearch 在腾讯内部广泛应用于日志实时分析、结构化数据分析、全文检索等场景,目前单集群规模达到千级节点、万亿级吞吐,同时腾讯联合 Elastic 公司在腾讯云上提供了内核增强版 ES 云服务。海量规模、丰富的应用场景推动着腾讯对原生 ES 进行持续的高可用、高性能、低成本等全方位优化。本次分享主要剖析腾讯对 Elasticsearch 海量规模下的内核优化与实践,希望能和广大 ES 爱好者共同探讨推动 ES 技术的发展。
黄华
2020/05/09
2.7K2
腾讯Elasticsearch海量规模背后的内核优化剖析
腾讯Elasticsearch海量规模背后的内核优化剖析
Elasticsearch 在腾讯内部广泛应用于日志实时分析、结构化数据分析、全文检索等场景,目前单集群规模达到千级节点、万亿级吞吐,同时腾讯联合 Elastic 公司在腾讯云上提供了内核增强版 ES 云服务。海量规模、丰富的应用场景推动着腾讯对原生 ES 进行持续的高可用、高性能、低成本等全方位优化。本次分享主要剖析腾讯对 Elasticsearch 海量规模下的内核优化与实践,希望能和广大 ES 爱好者共同探讨推动 ES 技术的发展。
腾讯云大数据
2021/01/07
7330
腾讯Elasticsearch海量规模背后的内核优化剖析
Elasticsearch 断路器报错了,怎么办?
这是系列文章的第三篇,主要探讨:Elasticsearch 断路器报错了,怎么办?
铭毅天下
2022/04/06
1.8K0
Elasticsearch 断路器报错了,怎么办?
400+节点的 Elasticsearch 集群运维
本文首发于InfoQ https://www.infoq.cn/article/1sm0Mq5LyY_021HGuXer
杨振涛
2019/03/11
6090
400+节点的 Elasticsearch 集群运维
400+节点的Elasticsearch集群运维
Meltwater每天要处理数百万量级的帖子数据,因此需要一种能处理该量级数据的存储和检索技术。
杨振涛
2019/04/19
7250
400+节点的Elasticsearch集群运维
Elasticsearch集群规划及节点角色规划醉佳实践
Elasticsearch 和 Lucene 都是 Java 语言编写,这意味着我们必须注意堆内存的设置。
全栈程序员站长
2022/08/19
1.1K0
【最佳实践】巡检项:云数据库(MongoDB)CPU 使用率
检查腾讯云数据库 MySQL 实例的 CPU 使用率情况,如果MongoDB实例的CPU使⽤率过⾼,会导致MonogoDB响应缓慢,甚⾄业务不可⽤。
ivesjiang@DBA
2022/04/07
9820
这份​Elasticsearch 工作笔记,值得收藏
从事Elasticsearch云产品的研发已经四年多了,在服务公有云客户的过程中也遇到了各种各样的使用方式以及问题,本文就把过去几年记录的一些问题和解决办法进行归类和总结,常读常新。
bellen
2022/03/14
1.8K0
这份​Elasticsearch 工作笔记,值得收藏
推荐阅读
相关推荐
ES异常排查之-熔断
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验