ElasticSearch使⽤ Docker 部署 ElasticSearch Linux 操作参数系统设置

Posted iHero

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch使⽤ Docker 部署 ElasticSearch Linux 操作参数系统设置相关的知识,希望对你有一定的参考价值。

获取合适的Elasticsearch Docker基础镜像

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.4.0

Linux 操作系统设置(Centos 8 )

禁⽤内存交换(Disable Swapping)

操作系统期望尽可能多的使⽤内存作为系统缓存,所以会把⼀些应⽤当前未使⽤的内存通过策略交换到磁盘上。
允许这个配置可能会把ES JVM未使⽤的内存以及可运⾏的 PageCache 交换到磁盘上,交换是 ⼀个极其损耗性能的动作,应该避免。

1. 临时禁⽤内存交换 (操作系统级锁定)
  • 不⽤重启操作系统
sudo swapoff -a
  • 需要重启操作系统
 vi /etc/fstab
#注释包含`swap`的⾏
2. 降低内存交换的倾向 (操作系统级锁定)
  • 不⽤重启操作系统
sudo sysctl -w vm.swappiness=1 
  • 需要重启操作系统
sudo vi /proc/sys/vm/swappiness
3. 允许进程锁定内存
  • 不⽤重启操作系统
ulimit -l unlimited
  • 需要重启操作系统
vi /etc/security/limits.conf
es_user soft memlock -1
es_user hard memlock -1
  • 验证⽂件描述设定是否⽣效
ulimit -l
4. 在Linux(Centos) 上使⽤mlockall 函数把进程的进程的已分配的内存地址锁定,防⽌

Elasticsearch的内存被交换到磁盘上 (进程级锁定)

  • 参数配置
 vim $ES_HOME/conf/elasticsearch.yml
 bootstrap.memory_lock: true
  • 验证内存锁定是否⽣效
curl -XGET 'HOST:PORT/_nodes?pretty&human&filter_path=**.host,**.

设置⽂件描述符(File Descriptors)

Elasticsearch 需要⼤量的⽂件描述符(File Descriptors),较少的⽂件描述符号可能导致⽆ 法建⽴更多的连接,最终可能导致数据丢失。

1. 临时设置最⼤虚拟内存映射总数 (操作系统级)
  • 不⽤重启操作系统
ulimit -n 65536
  • 需要重启操作系统
vi /etc/security/limits.conf
es_user soft nofile 65536
es_user hard nofile 65536
  • 验证⽂件描述设定是否⽣效
ulimit -n

最⼤映射总数 & 设置虚拟内存(Max Map Count & Virtual Memory)

Elasticsearch 是构建在Lucene之上的分布式搜索引擎,Lucene 在64位 Linux 操作系统中默认 采⽤MMapDirectory 来存储底层索引, 在操作系统中,默认mmap count 设置的⽐较⼩,可能会导致内存不⾜的异常。

1. 临时设置最⼤虚拟内存映射总数 (操作系统级)
  • 不⽤重启操作系统
 sysctl -w vm.max_map_count=262144
  • 需要重启操作系统
vi /etc/sysctl.conf
vm.max_map_count = 262144
  • 验证最⼤虚拟内存映射总数是否⽣效
sysctl vm.max_map_count
2. 临时设置虚拟内存地址限制 (操作系统级)
  • 不⽤重启操作系统
ulimit -v unlimited
  • 需要重启操作系统
vi /etc/security/limits.conf
es_user soft as unlimited
es_user hard as unlimited
ulimit -v 111211123
  • 验证虚拟内存地址限制是否⽣效
ulimit -v

设置允许⽤⼾创建的最⼤线程数(Max User processes)

Elasticsearch 节点内部使⽤多个线程库⽤于处理不同模块的⼯作,若设置的过⼩,可能会因 为⽆法创建线程导致请求或者集群异常。

1. 临时增⼤⽤⼾最⼤线程个数限制 (操作系统级)
  • 不⽤重启操作系统
ulimit -u 10240
  • 需要重启操作系统
vi /etc/security/limits.conf
es_user soft nproc 10240
es_user hard nproc 10240
  • 验证⽂件描述设定是否⽣效
ulimit -u

设置最⼤⽂件空间占⽤(Max File Size)

Elasticsearch 的索引⽂件(单Segment ⽂件 | 单translog ⽇志⽂件可能会占⽤⼤量的磁盘),若 操作系统不⽀持可能会丢失数据

1. 临时移除最⼤⽂件磁盘占⽤限制 (操作系统级)
  • 不⽤重启操作系统
 ulimit -f unlimited
  • 需要重启操作系统
vi /etc/security/limits.conf
es_user soft fsize unlimited
es_user hard fsize unlimited
  • 验证最⼤⽂件磁盘占⽤限定是否⽣效
ulimit -f

以上是关于ElasticSearch使⽤ Docker 部署 ElasticSearch Linux 操作参数系统设置的主要内容,如果未能解决你的问题,请参考以下文章

使用Docker部署ElasticSearch与kibana

Docker部署Elasticsearch集群并开启安全设置

Docker部署Elasticsearch

【教程】在Docker中部署ES(elasticsearch)

Docker-compose部署Elasticsearch和Kibana

如何在docker中部署Elasticsearch集群和kibana