是时候用 ES 拯救发际线啦

Elasticsearch OutOfMemoryError: Java heap space

Elasticsearch | 作者 yimusidian | 发布于2021年10月12日 | 阅读数:1438

目前是4个ES节点,每个ES节点分配12G的内存,目前集群在线索引为215,ES出现了OOM的问题,集群的使用情况见附件。
目前可以看到了Segment 占了近一半的内存,想知道内存到底被什么占用了?什么原因导致的OOM?就目前的内存情况,还能存储多少索引?
 
ES_JVM_heap.png ES_error_log.png
已邀请:

zmc - ES PAAS、JuiceFS

赞同来自:

首先确认了是堆内内存溢出,ES6.8.1版本,FST的结构是在堆内的,所以大部分应该都是FST这个常驻内存的结构占了内存;
 
OOM的原因就有很多了,大概率是查询的时候导致的...比如你这里光segment memory就占用了50%,还有缓存,buffer等会占用堆内存,然后你再来个大查询,就很有可能OOM了
 
解决问题的话有几个思路:
1.横向扩节点,或者直接纵向扩内存,你总共分配的内存也不多
2.优化:在低峰期,磁盘够的情况下做一下forcemerge
3.清理一部分过期索引
4.升级到ES7,这时候FST会放到堆外

Charele - Cisco4321

赞同来自:

这个segments.memory是一个内存总量,
包括 FST,Norms,DocValues,points等等的内存量。
比如你这个就是在加DocValues的时候oom了
 
不晓得你的机子物理内存是多少,最直接有校的的办法就是增加es内存
 

FFFrp

赞同来自:

启动的时候加上参数,oom的时候把堆栈dump下来吧

ewr223424

赞同来自:

大佬插个楼,请问message出现颜色符号如何处理掉?论坛人太少了,只能拆楼问了。

要回复问题请先登录注册