【已解决】ERROR: bootstrap checks failed memory locking requested for elasticsearch process but memory is not locked
官网说明:
elasticsearch官网建议生产环境需要设置bootstrap.memory_lock: true
官网的解释 是:发生系统swapping的时候ES节点的性能会非常差,也会影响节点的稳定性。所以要不惜一切代价来避免swapping。swapping会导致Java GC的周期延迟从毫秒级恶化到分钟,更严重的是会引起节点响应延迟甚至脱离集群。
所以最好限制住elasticsearch占用的内存情况,可选少用swap
错误内容:
开启bootstrap.memory_lock: true后,在Elasticsearch集群启动的时候,会报如下错误
ERROR: bootstrap checks failed memory locking requested for elasticsearch process but memory is not locked
我使用docker-compose布署的时候,集群一直在重启失败间循环!
解决方法:
方案1:
此方案适用于非systemd管理的linux发行版,centos 6及以下可以仅通过这个方案解决
临时解决方法:
ulimit -l unlimited
永久解决方法:
root权限编辑/etc/security/limits.conf
$ sudo vim /etc/security/limits.conf
添加如下内容,保存退出
* soft memlock unlimited
* hard memlock unlimited
这里的*代表的是所有用户名称,可以更换为指定用户名
另:这里有个坑就是如果/etc/security/limits.d文件夹下的有配置文件,那么会覆盖刚才修改的文件,所以请确保该目录没有其它文件,如有请联系运维人员确认删除
修改/etc/sysctl.conf
sudo echo "vm.swappiness=0" >> /etc/sysctl.conf
这个参数的作用是告诉Linux内核尽少的使用swap分区,不等于禁用swap,通过少使用swap来提高性能。
如果想立即生效而不是重启之后让sysctl.conf生效,请使用sysctl -p
重新登录或重启服务器方可生效
方案2:
适用于systemd管理的发行版,有文章提到centos 7需要使用此方案,本人使用debian 9.9.0 亲测解决问题,推荐先完成上边的方案后尝试本方案
这里还是推荐使用上边方法的第3步,尽少使用swap分区
在Centos7系统中,使用Systemd替代了之前的SysV。/etc/security/limits.conf文件的配置作用域缩小了。/etc/security/limits.conf的配置,只适用于通过PAM认证登录用户的资源限制,它对systemd的service的资源限制不生效。因此登录用户的限制,通过/etc/security/limits.conf与/etc/security/limits.d下的文件设置即可。
对于systemd service的资源设置,则需修改全局配置,全局配置文件放在/etc/systemd/system.conf和/etc/systemd/user.conf,同时也会加载两个对应目录中的所有.conf文件/etc/systemd/system.conf.d/.conf和/etc/systemd/user.conf.d/.conf。system.conf是系统实例使用的,user.conf是用户实例使用的。
全局生效方式:
sudo vim /etc/systemd/system.conf
最下方添加
DefaultLimitNOFILE=65536
DefaultLimitNPROC=32000
DefaultLimitMEMLOCK=infinity
保存, 重启系统
当然由于我是使用的docker,而不是包管理器安装的,给出的是全局的方案
局部生效方式:(针对包管理器安装elasticsearch的形式)
sudo systemctl edit elasticsearch
此命令会在/etc/systemd/system下创建elasticsearch.service.d/override.conf文件
添加如下内容
[Service]
LimitMEMLOCK=infinity
保存,退出,执行如下命令生效
sudo systemctl daemon-reload
如未生效,请尝试重启系统
压缩包版测试
针对使用tar.gz包,指定内存参考如图

我们按图索骥使用命令ES_JAVA_OPTS="-Xms512m -Xmx512m" ./bin/elasticsearch
如果此时出现
[2019-06-20T07:01:36,305][WARN ][o.e.b.JNANatives ] [node-1] Unable to lock JVM Memory: error=12, reason=Cannot allocate memory
[2019-06-20T07:01:36,340][WARN ][o.e.b.JNANatives ] [node-1] This can result in part of the JVM being swapped out.
[2019-06-20T07:01:36,343][WARN ][o.e.b.JNANatives ] [node-1] Increase RLIMIT_MEMLOCK, soft limit: 16777216, hard limit: 16777216
[2019-06-20T07:01:36,343][WARN ][o.e.b.JNANatives ] [node-1] These can be adjusted by modifying /etc/security/limits.conf, for example:
# allow user 'hellxz' mlockall
hellxz soft memlock unlimited
hellxz hard memlock unlimited
请再尝试加上第一种方案,两种方案同时使用
以上就是这些内容,希望能对读者有所帮助
声明,禁止布布扣、码迷、马开东、01海、colabug等网站复制转发此文章,其他请保留文章出处
【已解决】ERROR: bootstrap checks failed memory locking requested for elasticsearch process but memory is not locked的更多相关文章
- ES解决bootstrap checks failed, memory locking requested for elasticsearch process but memory is not locked问题
问题描述: ERROR: [1] bootstrap checks failed[1]: memory locking requested for elasticsearch process but ...
- elasticsearch报错之 memory locking requested for elasticsearch process but memory is not locked
安装elasticsearch报错如下: [2019-01-14T03:57:16,453][ERROR][o.e.b.Bootstrap ] [ip-172-31-30-62.ec2.interna ...
- elasticsearch6.4 memory locking requested for elasticsearch process but memory is not locked
[2018-10-18T05:28:57,713][ERROR][o.e.b.Bootstrap ] [node-45] node validation exception[1] bootstrap ...
- elasticsearch6.4 memory locking requested for elasticsearch process but memory is not locked 终极解决
echo "es hard memlock unlimited">>/etc/security/limits.confecho "es soft memloc ...
- ERROR: bootstrap checks failed
错误描述:Linux默认配置的参数过小,需要自己设置 max file descriptors [4096] for elasticsearch process is too low, increas ...
- 启动Sonar报错,ERROR: [1] bootstrap checks failed [1]: system call filters failed to install
错误提示信息: ERROR: [1] bootstrap checks failed[1]: system call filters failed to install; check the logs ...
- docker 启动 容器----bootstrap checks failed
错误信息: bootstrap checks failed 解决方法: 1.修改elasticsearch.yml配置文件,允许外网访问. vim config/elasticsearch.yml,增 ...
- ElasticSearch启动报错,bootstrap checks failed
修改elasticsearch.yml配置文件,允许外网访问. vim config/elasticsearch.yml# 增加 network.host: 0.0.0.0 启动失败,检查没有通过,报 ...
- idea中解决Error:java: Compilation failed: internal java compiler error的问题
项目中,使用gradle做项目构建,当我们想更改JDK的版本时,报以下错误: Information:Using javac 1.8.0_111 to compile java sourcesInfo ...
随机推荐
- #define及其用法
#define 在#define中,标准只定义了#和##两种操作.#用来把参数转换成字符串,##则用来连接前后两个参数,把它们变成一个字符 串. #include<stdio.h ...
- python 37条编程技巧-汇总(转载+整理)
1.原地交换两个数字 x, y =10, 20 print x, y y, x = x, y print x, y 10 20 20 10 2.链状比较操作符 n = 10 print 1 < ...
- 暑期训练狂刷系列——Foj 1894 志愿者选拔 (单调队列)
题目连接: http://acm.fzu.edu.cn/problem.php?pid=1894 解题思路: 因为出队和入队都满足队列的性质,优先单调队列的优先级有进入队列的顺序和人品的高低,在一段区 ...
- DP Codeforces Round #260 (Div. 1) A. Boredom
题目传送门 /* 题意:选择a[k]然后a[k]-1和a[k]+1的全部删除,得到点数a[k],问最大点数 DP:状态转移方程:dp[i] = max (dp[i-1], dp[i-2] + (ll) ...
- 题解报告:CODE[VS] 1082 线段树练习3(区间修改+区间查询)
题目描述 Description 给你N个数,有两种操作: 1:给区间[a,b]的所有数增加X 2:询问区间[a,b]的数的和. 输入描述 Input Description 第一行一个正整数n,接下 ...
- 使用 Suricata 进行入侵监控(一个简单小例子访问百度)
前期博客 基于CentOS6.5下Suricata(一款高性能的网络IDS.IPS和网络安全监控引擎)的搭建(图文详解)(博主推荐) 1.自己编写一条规则,规则书写参考snort规则(suricata ...
- Docker Java+Tomcat 环境搭建
软件环境:jdk.tomcat.docker.centos.虚拟机 首先,您要准备一个 CentOS 的操作系统,虚拟机也行.总之,可以通过 Linux 客户端工具访问到 CentOS 操作系统就行. ...
- 移动端使用页尾文字使用绝对定位遇到input框会飘起来的处理方案
如下版权信息的样式在遇到input框的时候会跟随输入框其后 优雅的解决方式:(定位遇上键盘飘窗解决) mounted里面写上:var originalHeight=document.documentE ...
- 田字格布局html div
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- 解决国内无法安装android sdk的问题
在使用 Android SDK Manager 的时候,主要会连接到两个地址 dl.google.com 和 dl-ssl.google.com,key发现这两个地址都是无法正常访问的,如何解决呢? ...