假设我有一台256GB内存和12TB SSD的机器。索引文档大小为100TB。我将30.5 GB分配给Elasticsearch堆。剩下的是Lucene和OS。
我的问题是,Elasticsearch支持多少虚拟内存?换句话说,我可以为每台机器将多少索引文档放入虚拟内存中?
由于
答案 0 :(得分:2)
virtual memory ES可以使用的金额由vm.max_map_count
中/etc/sysctl.conf
设置的值定义。默认情况下,它设置为262144,但您可以使用以下命令更改此值:
sysctl -w vm.max_map_count=262144
此文件包含进程的最大内存映射区域数 可能有。内存映射区域用作调用的副作用 malloc,直接由mmap和mprotect,以及加载共享时 库。
虽然大多数应用程序需要不到一千张地图,但确定 程序,特别是malloc调试器,可能会消耗很多, 例如,每个分配最多一个或两个地图。
默认值为65536。
因此,此设置不会为ES / Lucene提供特定的大小,但是给定进程可以使用的离散内存区域。准确使用多少内存取决于ES / Lucene分配的内存块的大小。 By default,Lucene使用
1<<30
= 1,073,741,824~ = 64位JRE上的1GB块1<<28
= 268,435,456~ = 256MB块因此,如果您进行数学运算,vm.max_map_count
的默认值可能已经足够适合您的情况,如果不是,您可以调整它并监控您的虚拟内存使用情况。