Elasticsearch支持30.5Gb堆(总共256 Gb内存)的虚拟内存量是多少?

时间:2016-01-12 23:33:10

标签: elasticsearch lucene virtual-memory

假设我有一台256GB内存和12TB SSD的机器。索引文档大小为100TB。我将30.5 GB分配给Elasticsearch堆。剩下的是Lucene和OS。

我的问题是,Elasticsearch支持多少虚拟内存?换句话说,我可以为每台机器将多少索引文档放入虚拟内存中?

由于

1 个答案:

答案 0 :(得分:2)

virtual memory ES可以使用的金额由vm.max_map_count/etc/sysctl.conf设置的值定义。默认情况下,它设置为262144,但您可以使用以下命令更改此值:

sysctl -w vm.max_map_count=262144

来自linux documentation

  

此文件包含进程的最大内存映射区域数   可能有。内存映射区域用作调用的副作用   malloc,直接由mmap和mprotect,以及加载共享时   库。

     

虽然大多数应用程序需要不到一千张地图,但确定   程序,特别是malloc调试器,可能会消耗很多,   例如,每个分配最多一个或两个地图。

     

默认值为65536。

因此,此设置不会为ES / Lucene提供特定的大小,但是给定进程可以使用的离散内存区域。准确使用多少内存取决于ES / Lucene分配的内存块的大小。 By default,Lucene使用

  • 1<<30 = 1,073,741,824~ = 64位JRE上的1GB块
  • 32位JRE上的
  • 1<<28 = 268,435,456~ = 256MB块

因此,如果您进行数学运算,vm.max_map_count的默认值可能已经足够适合您的情况,如果不是,您可以调整它并监控您的虚拟内存使用情况。

相关问题