关于弹性搜索内存的使用

use*_*154 29 elasticsearch

我目前正在使用elasticsearch 0.9.19.我使用的机器有大约300GB的磁盘空间,其上的RAM大约是23GB.我已经为弹性搜索分配了大约10GB的ram.我的操作是密集的.他们在附近1000docs/s.我只在机器上运行弹性搜索而没有其他进程.文档大小不大.它们很小,只有不超过10个字段.弹性搜索仅在具有1个分片和0个副本的一台机器上运行.

当我发送时,使用的内存会迅速增加1000 docs/s.虽然我只为弹性搜索分配了10GB内存,但仍然消耗了大约21 GB内存,最终弹性搜索过程导致堆空间不足.后来我需要清除操作系统缓存以释放所有内存.即使我停止发送弹性搜索,1000docs/s也不会自动清除内存.

因此,例如,如果我正在使用围绕1000doc/s写入操作运行弹性搜索,那么我发现它很快就达到了18 GB Ram的使用率,之后当我将写入操作减少到仅10个docs/s时,所使用的内存仍然显示在18左右GB.我认为应该减少写入操作的数量.我使用批量API来执行每个查询大小为100个文档的写操作.当写操作大约为1000docs/sec时,数据来自4台机器

这些是我在做顶级之后得到的数字

内存:24731664k总计,18252700k使用,6478964k免费,322492k缓冲区

交换:总共4194296k,使用0k,免费4194296k,缓存8749780k

PID用户PR NI VIRT RES SHR S%CPU%MEM TIME + COMMAND

1004弹性体20 0 10.7g 8.3g 10m S 1 35.3 806:28.69 java

请告诉我们是否有任何想法,这可能是什么原因.由于这个问题,我必须停止我的申请.我想我缺少任何配置.我已经在这里阅读了弹性搜索的所有缓存相关文档 http://www.elasticsearch.org/guide/reference/index-modules/cache.html

我也尝试使用clear cache API清除缓存,并尝试使用flush api.但没有任何改善.

提前致谢.

Mik*_*lov 3

总结一下邮件列表线程上的答案:问题是 Ruby 客户端无法限制其插入,并且随着大量文档的添加,Lucene 内存使用量确实会增加。我认为提交频率也可能存在问题:为了将新添加的文档刷新到磁盘,不时提交非常重要。OP还有问题吗?如果没有的话可以把解决方案贴出来吗?