部署 Elasticsearch 时,如何优化 Linux 系统的设置?

Sherwin.Wei Lv8

部署 Elasticsearch 时,如何优化 Linux 系统的设置?

回答重点

在部署 Elasticsearch 时,优化 Linux 系统的设置主要包括以下几个方面:
1)设置虚拟内存(swappiness)
2)增加文件描述符数目
3)调整虚拟内存映射计数
4)禁用透明大页
5)绑定内存和 CPU

扩展知识

1)设置虚拟内存(swappiness)

  • Swappiness 参数决定了系统将匿名内存页交换到磁盘上的频率。对于 Elasticsearch 这种对内存敏感的应用,将 swappiness 设置为较低值(如 1)可以减少数据交换到磁盘的频率,从而提高性能。
  • 可以通过命令 sysctl vm.swappiness=1 临时设置,或者将其写入 /etc/sysctl.conf 文件以永久生效,添加 vm.swappiness=1

2)增加文件描述符数目

  • Elasticsearch 需要打开大量文件,默认的文件描述符限制(通常为 1024)通常不够。
  • 可以通过命令 ulimit -n 65536 临时增加文件描述符数目,或者在 /etc/security/limits.conf 中添加:
    1
    2
    *    soft nofile 65536
    * hard nofile 65536

3)调整虚拟内存映射计数

  • mmap 操作对 Elasticsearch 非常重要,默认的虚拟内存映射限制(vm.max_map_count)需要增大。
  • 使用 sysctl -w vm.max_map_count=262144 临时调整,可以通过将 vm.max_map_count=262144 写入 /etc/sysctl.conf 文件永久生效。

4)禁用透明大页

  • 透明大页(Transparent Huge Pages,THP)可能会对 Elasticsearch 的性能产生负面影响,禁用它有助于提高性能。
  • 在运行时可以通过以下命令禁用:
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    也可以在 `/etc/rc.local` 文件中添加上述命令以在每次启动时禁用。
    

5)绑定内存和 CPU

  • 在多核系统中,Elasticsearch 的性能往往能通过将特定的 Elasticsearch 进程绑定到特定的 CPU 和内存节点而得到提升。
  • 这可以使用 taskset 等工具来实现,例如:taskset -c 0,1 /path/to/elasticsearch 将 Elasticsearch 进程绑定到 CPU 0 和 1。
Comments
On this page
部署 Elasticsearch 时,如何优化 Linux 系统的设置?