首页
登录 | 注册

【已解决】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分区

全局生效方式:
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

如未生效,请尝试重启系统

以上就是这些内容,希望能对读者有所帮助

声明,禁止布布扣、码迷、马开东、01海、colabug等网站复制转发此文章,其他请保留文章出处


相关文章

  • LSTM实现中文文本情感分析
    1. 背景介绍 文本情感分析是在文本分析领域的典型任务,实用价值很高.本模型是第一个上手实现的深度学习模型,目的是对深度学习做一个初步的了解,并入门深度学习在文本分析领域的应用.在进行模型的上手实现之前,已学习了吴恩达的机器学习和深度学习的 ...
  • Windbg分析高内存占用问题
    1. 问题简介 最近产品发布大版本补丁更新,一商超客户升级后,反馈系统经常奔溃,导致超市的收银系统无法正常收银,现场排队付款的顾客更是抱怨声声.为了缓解现场的情况, 客户都是手动回收IIS应用程序池才能解决. 这样的后果是很严重的,接到反馈 ...
  • 你所不知道的日志异步落库
    在互联网设计架构过程中,日志异步落库,俨然已经是高并发环节中不可缺少的一环.为什么说是高并发环节中不可缺少的呢? 原因在于,如果直接用mq进行日志落库的时候,低并发下,生产端生产数据,然后由消费端异步落库,是没有什么问题的,而且性能也都是异 ...
  • More Effective C++
    More Effective C++ 35个改善编程与设计的有效方法 只有深入了解C++编译器如何解释代码, 才有可能用C++语言写出健壮的软件. C++的难学, 不仅在其广博的语法, 语法背后的语义, 语义背后的深层思维, 深层思维背后的 ...
  • [翻译 EF Core in Action 2.2] 创建应用程序的数据库上下文
    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Core 书籍.原版地址. 是除了官方文档外另 ...
  • 详解linux进程间通信-管道 popen函数 dup2函数
    前言:进程之间交换信息的唯一方法是经由f o r k或e x e c传送打开文件,或通过文件系统.本章将说明进程之间相互通信的其他技术—I P C(InterProcess Communication).今天将介绍半双工的管道. 一.匿名管 ...

2019 cecdns.com webmaster#cecdns.com
12 q. 0.075 s.
京ICP备10005923号