堆内存:大小和交换 | Elasticsearch: 权威指南 | Elastic
Configuration | Elasticsearch Guide [2.4] | Elastic (项目原因,新版自行查看)
限制内存使用 | Elasticsearch: 权威指南 | Elastic
虚拟内存
Elasticsearch默认使用一个 hybrid mmapfs / niofs目录来存储它的索引。操作系统对 mmap 计数的默认限制可能太低,这可能会导致内存不足异常。

在 Linux 上,您可以通过运行以下命令来增加限制:
sysctl -w vm.max_map_count=262144
要永久设置此值,请更新/etc/sysctl.conf 中的vm.max_map_count设置 。
ps:If you installed Elasticsearch using a package (.deb, .rpm) this setting will be changed automatically. To verify, run sysctl vm.max_map_count.
vi /etc/sysctl.conf
vm.max_map_count=655360
sysctl -p
内存设置
大多数操作系统尝试将尽可能多的内存用于文件系统缓存,并急切地换出未使用的应用程序内存,这可能导致弹性搜索进程被交换。交换对性能和节点稳定性非常不利,因此应不惜一切代价避免。
有以下三种选择:
一、禁用交换
最简单的选择是完全禁用交换。通常 Elasticsearch 是唯一运行在机器上的服务,它的内存使用由ES_HEAP_SIZE环境变量控制。应该不需要启用交换。
在Linux系统中,你可以临时停用:
sudo swapoff -a
要永久禁用它,您需要编辑/etc/fstab文件并注释掉swap.
- 在 Windows 上,可以通过完全禁用分页文件来实现等效的
System Properties → Advanced → Performance → Advanced → Virtual memory.
二、配置swappiness
第二个选项是确保将 sysctl 值vm.swappiness设置为0. 这减少了内核交换的倾向,并且在正常情况下不应该导致交换,同时仍然允许整个系统在紧急情况下交换。
从内核版本 3.5-rc1 及更高版本开始,swappiness 设置为

本文详细讲解了如何调整Elasticsearch内存设置,包括增加mmap限制、配置swappiness、禁用交换、锁定内存以及合理设置堆内存。了解堆内存对性能的影响和最佳实践,避免内存不足和交换带来的问题。
最低0.47元/天 解锁文章
1144

被折叠的 条评论
为什么被折叠?



