ElasticStack - Heap、Memory 大小与交换

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

堆内存:大小和交换 | 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 设置为

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值