在elasticsearch配置文件中,如果没有修改bootstrap.memory_lock 参数的话,默认为false,会导致elasticsearch缓存的文件频繁的被交换出去,从而导致在查询过程中频繁的读取磁盘,磁盘IO很高。
如何开启内存锁定? 以下修改均是基于CentOS 7.3系统
官网地址:https://www.elastic.co/guide/en/elasticsearch/reference/7.3/setting-system-settings.html#limits.conf
第一步:修改elasticsearch配置文件
# 将此项配置注释打开,不打开注释的话,默认是false bootstrap.memory_lock: true第二步:修改系统内存限制 在/etc/security/limit.conf 文件添加配置,这里主要配置是memlock改为unlimited,可以指定elasticsearch用户,这里是全部用户。
* hard nofile 65536 * soft nofile 65536 * hard nproc 65536 * soft nproc 65536 * hard memlock unlimited * soft memlock unlimited第三步:修改系统配置 这一步很多文档是要求需改/etc/systemd/system.conf,而这里是根据官网配置方法:
# 创建elasticsearch的系统配置项,默认是不存在的 systemctl edit elasticsearch # 默认文件为空,添加内容 [Service] LimitMEMLOCK=infinity # 重新加载单元,这一步不需要重启系统 sudo systemctl daemon-reload第四步:重启elasticsearch