(0.6)elasticsearch操作系统配置

官网参考:https://www.bookstack.cn/read/elasticsearch-7.9-en/2f8ceb1844a57efa.md

假设是Centos7环境

【1】生产环境使用,必须要考虑的OS配置

都是要启动ES之前配置的

【1.1】swap交换内存关闭

(1)临时关闭

sudo swapoff -a

(2)修改 vm.swappiness

这个参数是什么意思呢?就是什么时候使用虚拟内存,如果设置为10,即当实际内存不足10%时使用交换内存;

设置它的话,可以让系统在紧急情况还是可以使用交换内存;

  1. 查看:cat /proc/sys/vm/swappiness
  2. 临时调整:sysctl vm.swappiness = 1
  3. 永久调整:vi /etc/sysctl.conf   =>  sysctl vm.swappiness = 1 =》保存退出 =》 重载生效: sysctl -p

(3)通过锁定内存页解决:bootstrap.memory_lock:true

mlockall 如果尝试分配超出可用内存的内存,则可能导致JVM或Shell会话退出!

  

启动Elasticsearch之后,您可以通过检查 mlockall此请求的输出中的值来查看是否成功应用了此设置

GET _nodes?filter_path=**.mlockall

如果看到的mlockallfalse,则表示mlockall请求已失败。您还将在日志中看到一行,其中包含更多信息Unable to lock JVM Memory;

【1.2】系统限制配置 ulimit

(1)永久修改

sudo su 

vi /etc/security/limits.conf

* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
* soft stack 65535
* hard stack 65535

然后,退出登录,重连客户端即生效; 即此更改仅在elasticsearch用户下次打开新会话时生效

其实只要修改 nofile / nproc 即可(打开文件限制数、打开线程限制数),stack 为堆;其中,noproc至少4096,nofile 至少65535

(2)临时生效

sudo su    #root登录
ulimit -n 65535   #更改打开文件的最大数量
su elasticsearch

【1.3】虚拟内存 vm.max_map_count

Elasticsearch使用 mmapfs默认情况下,该目录用于存储其索引。默认的操作系统对mmap计数的限制可能太低,这可能会导致内存不足异常。

在Linux上,您可以通过运行以下命令来增加限制root

(0)查看

sysctl vm.max_map_count

(1)临时生效

sysctl -w vm.max_map_count=262144

(2)永久生效

1vi  /etc/sysctl.conf 
(2)vm.max_map_count=2621443)sysctl -p

要永久设置此值,请更新中的vm.max_map_count设置。要在重启后进行验证,请运行sysctl vm.max_map_count

RPM和Debian软件包将自动配置此设置。不需要进一步的配置。

【1.4】DNS缓存设置(不需要管)

Elasticsearch在安装了安全管理器的情况下运行。有了安全管理器,JVM默认将无限期地缓存正主机名解析,并且默认将十秒内缓存负主机名解析。

  Elasticsearch用默认值覆盖此行为,以将正向查找缓存六十秒,并将负向查找缓存十秒。这些值应适用于大多数环境,包括DNS分辨率随时间变化的环境。

  如果没有,您可以编辑值es.networkaddress.cache.ttl然后es.networkaddress.cache.negative.ttlJVM选项

  请注意,这些值networkaddress.cache.ttl=<timeout> 和 networkaddress.cache.negative.ttl=<timeout> 在里面 Java安全政策除非你删除的设置被忽略Elasticsearch 

  es.networkaddress.cache.ttles.networkaddress.cache.negative.ttl

【1.5】修改tcp重传超时参数 net.ipv4.tcp_retries2

问题:群集中的每一对节点都通过许多TCP连接进行通信,这些连接 保持开放 直到其中一个节点关闭或节点之间的通信由于基础基础架构的故障而中断

情况:

  大多数Linux发行版默认将任何丢失的数据包重传15次。重新传输以指数方式回退,因此这15次重新传输需要900秒钟以上的时间才能完成。

  这意味着使用这种方法,Linux需要花费几分钟的时间来检测网络分区或故障节点。Windows默认仅重传5次,相应的超时时间约为6秒。

建议:

  Linux的默认设置允许通过可能遭受很长数据包丢失的网络进行通信,但是对于大多数Elasticsearch集群而言,此默认设置对于单个数据中心内的生产网络而言过于昂贵。

  高可用性群集必须能够快速检测节点故障,以便它们可以通过重新分配丢失的碎片,重新路由搜索以及可能选择一个新的主节点来迅速做出反应。因此,Linux用户应减少最大TCP重传次数。

(1)临时修改

sysctl -w net.ipv4.tcp_retries2=5

(2)永久生效

1vi  /etc/sysctl.conf 
(2)sysctl -w net.ipv4.tcp_retries2=5
3)sysctl -p

相关配置

Elasticsearch还使用超时来实现自己的内部运行状况检查,该超时比Linux上的默认重传超时要短得多。由于这些是应用程序级别的运行状况检查,因此其超时必须考虑到应用程序级别的影响,例如垃圾收集暂停。

您不应减少与这些应用程序级运行状况检查相关的任何超时。

您还必须确保您的网络基础架构不会干扰节点之间的长期连接, 即使这些连接似乎处于空闲状态当设备达到一定寿命时断开连接的设备是Elasticsearch集群的常见问题根源,因此不能使用。

原文地址:https://www.cnblogs.com/gered/p/14508321.html