我正在使用Windows 2012 R2计算机。
我在环境变量中设置了Heap Size,如下所示 ES_HEAP_SIZE 4克
设置堆大小后,我使用命令
将Elasticsearch安装为windows服务service.bat install
当我启动该服务时,Elasticsearch服务已正确使用4GB(Checked in Taskmanger.exe)
一段时间后,elasticsearch服务使用的内存降至1 GB。
这是预期的吗?
答案 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时,您可以设置允许使用的最大内存量。如果您不发出任何查询,则内存使用量可能会降至默认值