暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

24_Elasticsearch运维_系统参数优化

lin在路上 2020-06-19
596

Elasticsearch优化流程可以分为系统参数优化、集群层面优化、索引层面优化、查询层面优化。本文档主要介绍系统参数优化。

1 文件句柄设置

每个进程默认句柄数只有1000,对Elasticsearch来说不够,建议改成65535

 vim /etc/security/limits.conf
 #添加如下内容
 * - nofile 65535

2 虚拟内存设置

  • max_map_count定义进程能拥有的内存区域

     sysctl -w vm.max_map_count=262144
  • 设置bootstrap.mlockall: true,避免使用swapping

     vim ./conf/elasticsearch.yml
     修改如下内容:
     bootstrap.mlockall: true
  • 设置memlock最大锁定内存地址空间

     vim /etc/security/limits.conf
     新增如下内容:
     * soft memlock unlimited
     * hard memlock unlimited
  • 确认文件pam_limits.so位置,并添加到/etc/pam.d/login中

     vim /etc/pam.d/login
     新增如下内容:
     session required /lib64/security/pam_limits.so
  • 验证是否生效

     curl localhost:9200/_nodes/stats/process?pretty

3 磁盘缓存设置

  • dirty_ratio

    • 用于指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如10%),系统不得不开始处理缓存脏页(因为此时脏页数量已经比较多,为了避免数据丢失需要将一定脏页刷入外存);在此过程中很多应用进程可能会因为系统处理文件IO而阻塞

    • 建议该参数适当调小。如果cached的脏数据所占比例(这里是占MemTotal的比例)超过这个设置,系统会停止所有的应用层的IO写操作,等待刷完数据后恢复IO。所以万一触发了系统的这个操作,对于用户来说影响非常大的

  • dirty_background_ratio

    • 用于指定当文件系统缓存脏页数量达到系统内存百分之多少时(如5%)就会触发pdflush/flush/kdmflush等后台回写进程运行,将一定缓存的脏页异步地刷入外存;

 vim /etc/sysctl.conf
 新增如下内容:
 vm.dirty_ratio = 10
 vm.dirty_background_ratio = 5

4 swap调优

为了保证性能,需要最大可能的使用物理内存。

 sudo sh -c 'echo "1">/proc/sys/vm/swappiness'

备注:由于linux内核版本3.5开始将0的含义由"除非内存不足,否则不要交换"更改为"从不交换",故建议将值设置为1

该值以前的含义是“除非内存不足,否则不要交换”。自Linux内核版本3.5-rc1起,含义有所不同。该更改被重新移植到许多发行版中,包括内核2.6.32-303的RedHatas。这将值0的含义更改为“从不交换”。出于这个原因,现在建议将值设置为1。

5 磁盘挂载属性设置

  • 磁盘挂载属性设置为noatime,nodiratime。避免每次访问文件都更新access time

 vim /etc/fstab
 /dev/sda1   /opt/data/1   ext4 defaults,noatime,nodiratime 0 0
 /dev/sdb1   /opt/data/2   ext4 defaults,noatime,nodiratime 0 0
 #noatime,nodiratime避免每次数据访问时都更新access time信息

6 numa设置

Elasticsearch将占用大量内存且为了性能需要关闭swap,为避免遇到numa陷阱需要关闭numa

numa陷阱。当你的服务器还有内存的时候,发现它已经在开始使用swap了,甚至已经导致机器出现停滞的现象。这个就有可能是由于numa的限制,如果一个进程限制它只能使用自己的numa节点的内存,那么当自身numa node内存使用光之后,就不会去使用其他numa node的内存了,会开始使用swap,甚至更糟的情况,机器没有设置swap的时候,可能会直接死机

 #关闭Numa
 echo ‘never’ > /sys/kernel/mm/transparent_hugepage/defrag
 echo ‘never’ > /sys/kernel/mm/transparent_hugepage/enabled
 
 sysctl –w vm.zone_reclaim_mode=0
 #内存不足时,值为0将倾向于从其他节点分配内存;值为1将倾向于从本地节点回收Cache内存



文章转载自lin在路上,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论