关于弹性搜索内存使用情况

我目前使用elasticsearch 0.9.19。 我使用的机器拥有大约300GB的磁盘空间,其上的RAM大约为23GB。 我已经分配了大约10GB的内存来进行弹性搜索。 我的操作是写密集的。 他们大约在1000docs/s 。 我只在机器上运行弹性搜索,没有其他进程。 文档大小不大。 他们只有不超过10个领域小。 弹性搜索仅在具有1个碎片和0个副本的一台机器上运行。

使用的内存在发送1000 docs/s时开始快速增加。 尽管我已经为10GB内存分配了弹性搜索,但仍然消耗了将近21 GB的RAM,最终弹性搜索过程导致堆空间不足。 后来我需要清除OS缓存以释放所有内存。 即使我停止发送弹性搜索, 1000docs/s那么内存也不会自动清除。

因此,例如,如果我使用大约1000doc/s写入操作进行弹性搜索,那么我发现它非常快速地达到了18 GB的Ram使用率,而后来当我将写入操作减少到仅为10 docs / s时,仍然使用的内存仍然显示大约18 GB。 我认为这应该随着写入操作数量的减少而下降。 我正在使用Bulk API执行我的写操作,每个查询的大小为100个文档。 当写入操作约为1000docs / sec时,数据来自4台机器

这些是我在做最好之后得到的数字

Mem:共24731664k,使用18252700k,6478964k免费,322492k缓冲区

Swap:总计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

我也尝试使用清除缓存API清除缓存,并尝试使用flush API。 但没有得到任何改善。

提前致谢。


总结邮件列表线程的答案:问题在于Ruby客户端无法遏制其插入,并且随着大量文档的添加,Lucene内存使用量也会增加。 我认为提交频率可能也存在问题:为了将新添加的文档刷新到磁盘,不时提交是很重要的。 OP是否仍然存在问题? 如果不是,你可以发布解决方案吗?

链接地址: http://www.djcxy.com/p/60127.html

上一篇: Regarding elastic search memory usage

下一篇: Join vs. sub