我目前正在使用弹性搜索 0.9.19。我使用的机器有大约 300GB 的磁盘空间,它的 RAM 大约是 23GB。我已经为弹性搜索分配了大约 10GB 的内存。我的操作是写密集型的。他们在身边1000docs/s
。我只在机器上运行弹性搜索,没有其他进程。文档大小不大。它们很小,只有不超过 10 个字段。弹性搜索仅在一台具有 1 个分片和 0 个副本的机器上运行。
当我发送时,使用的内存开始迅速增加1000 docs/s
。虽然我只为弹性搜索分配了 10GB 内存,但仍然消耗了将近 21GB 的内存,最终弹性搜索过程导致堆空间不足。稍后我需要清除操作系统缓存以释放所有内存。即使我停止发送弹性搜索,1000docs/s
内存也不会自动清除。
因此,例如,如果我在运行弹性搜索时使用周围的1000doc/s
写操作,我发现它很快就达到了 18 GB Ram 使用量,后来当我将写操作减少到只有 10 docs/s 时,使用的内存仍然显示在 18 左右国标。我认为这应该随着写操作数量的减少而下降。我正在使用 Bulk API 执行我的写入操作,每个查询的大小为 100 个文档。当写入操作约为 1000docs/sec 时,数据来自 4 台机器
这些是我在做 top 后得到的数字
内存:总计 24731664k,已使用 18252700k,空闲 6478964k,322492k 缓冲区
交换:总共 4194296k,使用 0k,免费 4194296k,缓存 8749780k
PID 用户 PR NI VIRT RES SHR S %CPU %MEM TIME+ 命令
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 清除缓存,也尝试过刷新 api。但没有得到任何改善。
提前致谢。