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中部署ES(elasticsearch)