一、问题描述
- 1. 集群节点3台,配置4核16G
- 2. 分片副本数5 * 2
- 3. JVM参数:-Xms4G -Xmx4G
- 4. 老年代一直涨,GC回收不了
- 5. 业务数据有批量写入的操作

curl -s 'localhost:9200/_cat/nodes?h=name,fm,fcm,sm,qcm,im&v'
fielddata.memory_size (fm), // 字段缓存占用内存
filter_cache.memory_size (fcm) // 过滤语句缓存占用内存
segments.memory (sm) // 每个分片包含的断 占用内存
http://localhost:9200/_nodes/hot_threads
二、问题分析
1. 堆内存太小
2. 分片数量不是3的倍数,导致集群压力不均衡
3. bulk批量写入过大
三、解决方案
1. 增大JVM配置参数-Xms8G -Xmx8G
参考资料
Bulk异常引发的Elasticsearch内存泄漏_wx60e27c825fe44的技术博客_51CTO博客
es进程占用内存持续增加,快爆了 - Elastic 中文社区
Java启动参数详解_啊荻~的博客
ES 性能调优,这可能是全网最详细的 Elasticsearch 性能调优指南_Elastic开源社区的博客
ES内存持续增长问题分析_道友,且慢的博客
elasticsearch实际总结(4)—— 查询缓存
Elasticsearch内存溢出怎么排查?收藏这篇内存组成! - 墨天轮
Day19 ES内存那点事 - Elastic 中文社区
【Arthas性能排查系列(三)】火焰图分析_ADAMs.的博客
Elasticsearch 之 Translog