1、内存不足
由于ES是运行在JVM上,JVM本身除了分配的heap内存以外,还会用到一些堆外(off heap)内存。 在小内存的机器上跑ES,如果heap划分过多,累加上堆外内存后,总的JVM使用内存量可能超过物理内存限制。 如果swap又是关闭的情况下,就会被操作系统oom killer杀掉 修改ES中config目录下的jvm.options文件 命令:vim jvm.options
将
-Xms1g
-Xmx1g
改为
-Xms512m
-Xmx512m
2、初始化堆内存和最大堆内存设置不一致导致
initial heap size [268435456] not equal to maximum heap size [536870912]; this can cause resize pauses and prevents mlockall from locking the entire heap
翻译一下:
初始堆大小[268435456]不等于最大堆大小[536870912];这可能导致调整大小暂停,并阻止mlockall锁定整个堆。
解决办法:
将初始化堆内存和最大堆内存设置为一样,即问题一的配置,这样,就避免了mlockall锁定整个堆。
3、max_map_count过低
max virtual memory areas vm.max_map_count [65536] is too low, increase to at least [262144]
翻译一下:
虚拟内存区域数量[65536]过低,至少增加到[262144]
默认为65536,调整4倍即262144
解决办法:
此操作需要root权限
在/etc/sysctl.conf文件最后添加一行
vm.max_map_count=262144
执行/sbin/sysctl -p 立即生效