概述
大多数操作系统都尽可能多地为文件系统缓存使用内存,并切换出未使用的应用程序 内存。这可能导致部分 JVM 堆被交换到磁盘上。 对于性能和节点的稳定性来说,这种交换是非常糟糕的,应该不惜一切代价避免。它 可能导致垃圾收集持续几分钟而不是几毫秒,这可能导致节点响应缓慢,甚至脱离集 群。 可以通过三种方式来禁用 swapping:
- 禁用所有的 swap 文件
- 配置 swappiness 禁用swapping
- 启用 bootstrap.memory_lock 禁用 swapping。
通常 Elasticsearch 是运行在一个独立的机器上,且内存使用是通过 JVM 来控制的。这 可能不需要开启 swap。 禁用所有的 swap 包括临时禁用和永久禁用 swap。
1.1.2 临时禁用 swap在 Linux 操作系统,可以 root 用户通过以下命令来临时禁用 swap:
sudo swapoff -a
1.1.3 永久禁用 swap
要永久的停用 swap,可以通过编辑/etc/fstab 文件,注释文件中所有包含 swap 单词的 行。例如:
#/dev/mapper/vg_r160-lv_swap swap swap nosuid 0 0
1.2 配置 swappiness
可以在 Linux/Unix 系统中设置“vm.swappiness”的值为“1”,这样,正常情况下不会