在配置 ElasticSearch 服务过程中,我们一般要设置 bootstrap.memory_lock 为 true,避免内存数据被交换到 SWAP 分区中。在不同的操作系统中,配置 ElasticSearch 服务可以锁定内存的方式也不同。
一、Centos 6 非Systemd 系统
在 Centos 6 操作系统(主要以管理软件非 Systemd做判断)中配置方法。根据 ElasticSearch 服务启动过程中日志的提示信息处理即可。
1.1、修改用户资源限制
These can be adjusted by modifying /etc/security/limits.conf, for example:
# allow user 'es' mlockall
es soft memlock unlimited
es hard memlock unlimited
1.2、内存锁定
ERROR: [2] bootstrap checks failed
[1]: memory locking requested for elasticsearch process but memory is not locked
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
vm.max_map_count=263000
上面的信息是从 Centos7 中获取的,这里并没有准备 Centos 6 的报错信息。
上面的内容提示有两个错误;第二个错误的解决方式也已经给出。第一个错误在 Centos6中应该不会出现,我这里就忽略了。
二、Centos 7 Systemd 系统
在Centos7系统中,使用Systemd替代了之前的SysV。其中用户资源的限制配置方式有了更改。
2.1、PAM 认证登录用户资源限制
/etc/security/limits.conf文件的配置作用域缩小了。此文件的配置,只适用于通过 PAM认证登录用户的资源限制,它对systemd的service的资源限制不生效。
因此登录用户的限制,通过/etc/security/limits.conf与/etc/security/limits.d 下的文件设置即可。
2.2、systemd service 资源限制
对于systemd service的资源设置,则需修改全局配置。
全局配置文件放在 /etc/systemd/system.conf 和 /etc/systemd/user.conf 文件中,同时也会加载两个对应部分配置子目录中的所有.conf文件。
system.conf是系统实例使用的,user.conf是用户实例使用的。
2.3、全局配置方式
vim /etc/systemd/system.conf
最下方添加
DefaultLimitNOFILE=65536
DefaultLimitNPROC=32000
DefaultLimitMEMLOCK=infinity
保存, 重启系统