部署 Elasticsearch 时,如何优化 Linux 系统的设置?
部署 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