elasticsearch伤心几个月以来每星期都要抽风一次,突然间查询非常慢, 看下liunx的内存几乎被elasticsearch吃了个精光,就身下不到10M的内存。
开始按照网上给出的解决方案 启动的时候给es设置个人固定大小的内存
export ES_HEAP_SIZE=10g
./bin/elasticsearch -Xmx10g -Xms10g.
两种方式都不行 设置之后整个es就启动不了
后来看下下官方给出的建议说是要锁定内存,于是我打开es配置文件找打一下节点放开
# 当JVM开始写入交换空间时(swapping)ElasticSearch性能会低下,你应该保证它不会写入交换空间 # 设置这个属性为true来锁定内存,同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过 `ulimit -l unlimited` 命令 # bootstrap.mlockall: true # 确保 ES_MIN_MEM 和 ES_MAX_MEM 环境变量设置为相同的值,以及机器有足够的内存分配给Elasticsearch # 注意:内存也不是越大越好,一般64位机器,最大分配内存别才超过32G
草。重启不了了,liunx还有个东西也需要同时配置 打开/etc/security/limits.conf 在最后面加上以下两行
* soft memlock unlimited
* hard memlock unlimited
* 号表示对所有用户生效
以上操作暂时解决了内存问题 ,如果还不行继续一下操作
之后我还是在es的配置文件 config/jvm.options 中对
-Xms2g
-Xmx2g
2个配置节点进行了修改 改成了 20g
设置成20g之后直接卡成狗了 所以我改回去之后 设置内存交换参数终于不卡了,貌似内存还是占多
打开liunx配置文件 /etc/sysctl.conf 修改内存交换参数 在最后一行增加
vm.swappiness=1
参考 https://www.elastic.co/guide/cn/elasticsearch/guide/current/heap-sizing.html