Elasticsearch 内存占用高,通常由以下几个核心原因导致,其中**堆内存(Heap)和堆外内存(Off-Heap)**都需要重点关注:
✅ 正确示例(64G 机器):
# jvm.options
-Xms30g
-Xmx30g
text 字段做 sort / agg 会加载 Fielddata 到堆✅ 解决:
keyword 做聚合"fielddata": false
terms / date_histogram 会缓存大量 bucket✅ 优化:
filter 缩小数据范围composite 聚合分页indices.queries.cache.sizeindices.requests.cache.size默认占用堆的一部分,查询多时会增长。
✅ 可适当调小:
indices.queries.cache.size: 10%
✅ 优化:
force mergePOST /index/_forcemerge?max_num_segments=1
✅ 特点:
buff/cache✅ 优化:
indices.memory.index_buffer_size: 10%
refresh_interval: 30s
✅ 建议:
# 查看堆使用
GET _nodes/stats/jvm
# 查看内存占用分布
GET _nodes/stats/indices?filter_path=**.memory
# 查看字段数据
GET _nodes/stats/indices/fielddata
# 查看 Segment
GET _cat/segments?v
Elasticsearch 内存高,不是“用得多”,而是“用得不对”
通常是:堆太大、聚合重、分片多、Segment 多、OS Cache 被误解。
如果你愿意,可以贴:
GET _nodes/stats 输出我可以帮你精准定位是哪一块内存高。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。