为什么我elasticsearch内存剧增,生成10G多的hprof文件?

每天的日志10多G,生成的hprof文件超大,这是因为什么?
eshprof.png
已邀请:

采菊篱下 - 无分享不快乐 助力技术开源分享 运维一枚

赞同来自: push

这种情况,主要是查询时,fielddata缓存的数据越来越多造成的(默认是不自动清理的)
{
    "persistent" : {
        "indices.fielddata.cache.size" : "40%"
    }
}
设置这个参数,让字段数据缓存的内存大小达到heap 40%就起用自动清理旧的缓存数据
 
详情参见:
https://www.elastic.co/guide/en/elasticsearch/guide/current/_limiting_memory_usage.html#fielddata-size 
建议内存至少2G,不然总清理内存,代价是很高。
 
cat一下fielddata,看看是哪些字段占用的,看看字段是否是analyzed过的,分析过的无法使用doc_value,如果还是增加,那就是你的查询很频繁了,试试限制fielddata的使用率:
{
"persistent" : {
"indices.fielddata.cache.size" : "40%"
}
}

还有就是,如果是日志类型的,一般都是查询最新的数据,可以尝试在每天半夜什么时候,clear cache一下(前提是基本前一天的查询不会经常被再查询了)

如果还是不行,那就只能增加内存或节点了

要回复问题请先登录注册