使用 dmesg 来查看一些硬件或驱动程序的信息或问题。

Elasticsearch data节点堆内存已经达到了32GB应该怎么做

Elasticsearch | 作者 lewis | 发布于2021年05月09日 | 阅读数:2455

版本: 7.3.2
运行环境:200GB内存、根据官网推荐、ES实例分配堆内存 32GB
问题:当前ES集群节点有两个data节点的堆内存使用已经达到了30GB、因为超过了 ‘indices.breaker.total.limit: 95%’ 所设置的报警阈值、所以集群状态变为黄色了、这个时候应该怎么处理这个 data 节点呢? (重启么?) 
master的报错信息:
[2021-05-09T08:04:15,824][DEBUG][o.e.a.a.c.n.s.TransportNodesStatsAction] [10-10-master] failed to execute on node [aYvqn5ttSS2CjIgZ5dL6tw]
org.elasticsearch.transport.RemoteTransportException: [data-es-group1-200-76-1][10.10.10.1:9300][cluster:monitor/nodes/stats[n]]
Caused by: org.elasticsearch.common.breaker.CircuitBreakingException: [parent] Data too large, data for [<transport_request>] would be [32839670332/30.5gb], which is larger than the limit of [31621696716/29.4gb], real usage: [32839666992/30.5gb], new bytes reserved: [3340/3.2kb], usages [request=0/0b, fielddata=0/0b, in_flight_requests=72850/71.1kb, accounting=160109549/152.6mb]
已邀请:
匿名用户

匿名用户

赞同来自: lewis

不要局限内存不能超过32GB的说法.
 
200GB内存的服务器,请放心的把内存调整到100GB. 生产环境50台服务器验证过,没有任何问题.
 
最好把200GB的服务器拆分开,内存太多了没用的,ES吃CPU,吃内存,吃磁盘,吃网卡,单个硬件资源过剩就是浪费,需要匹配硬件资源才行.
 
不能瞎配.
最佳实践是,CPU 20/40核心(40/80线程),内存64/128GB,磁盘10TB/20TB(最好SSD),网卡2/4块千M(最好万M)
 
 

JiangJibo - 喊我雷锋

赞同来自:

你每个节点的内存都有200G吗?这样的话对内存占整体内存的比例太小了,数据量太大,把内存资源分割到多个node里吧

zmc - ES PAAS、JuiceFS

赞同来自:

资源有限的话就在物理机上增加节点(横向扩展,有资源的话尽量别在一个物理机上部署)
你这个报错是请求需要使用的内存过大触发的熔断。
一个实例用到30G,是不是用了fileddata什么的,或者数据太大导致FST过大,如果有fileddata这种建议优化掉,如果单纯数据大,只能横向扩展了

lewis

赞同来自:

不知道各位发现问题没有、😂

WX20210510-151122.png

 

Ombres

赞同来自:

https://github.com/elastic/ela ... 46169
 
试试这个,正常情况下能解决大部分问题
-XX:+UseG1GC
-XX:G1ReservePercent=25
-XX:InitiatingHeapOccupancyPercent=30
 

lewis

赞同来自:

昨天的尝试失败了、集群又黄了、breaker.request.limit 的配置并没有想预期的那样触发内存的回收、经过重新调研、发现当前只能将  indices.breaker.total.use_real_memory这个配置改为 false、参考自:
WX20210511-155724.png

Janson

赞同来自:

数据量大了还是建议水平扩展节点。物理节点200G通过虚拟机分出3台机器,然后分别安装es,加入现有集群。

要回复问题请先登录注册