在Windows中设置ES_HEAP_SIZE

时间:2015-09-18 05:05:55

标签: windows elasticsearch

我正在使用Windows 2012 R2计算机。

我在环境变量中设置了Heap Size,如下所示 ES_HEAP_SIZE 4克

设置堆大小后,我使用命令

将Elasticsearch安装为windows服务
service.bat install

当我启动该服务时,Elasticsearch服务已正确使用4GB(Checked in Taskmanger.exe)

一段时间后,elasticsearch服务使用的内存降至1 GB。

这是预期的吗?

2 个答案:

答案 0 :(得分:2)

这显然是an issue of ES under Windows

从链接引用:

  

您在node stats API中看到的4gb已提交堆大小是通过设置ES_HEAP_SIZE(Xms)保留的虚拟内存量,即使禁用了bootstrap.mlockall也是如此。

     

通过启用bootstrap.mlockall,我们希望调用VirtualLock()将工作集锁定到物理内存中,这最初发生(这是您在任务管理器中看到的内存),但最终会下降。

     

我还没有对此有一个可靠的解释,但我观察到系统所承受的内存压力越大(即可用空间越小),“退出”的速度就越快。发生。好像Windows并不尊重工作集中的页面被锁定这一事实,并且会在资源变低时释放它们。

     

那里有很多信息似乎表明VirtualLock不保证页面不会被交换,只会降低几率,但是文档没有说明这一点。

答案 1 :(得分:0)

1Gb是Elasticsearch的默认堆大小。因此,当您设置env.variable时,您可以设置允许使用的最大内存量。如果您不发出任何查询,则内存使用量可能会降至默认值