OOM是什么?
OOM 是 Out of Memory (内存不足)的简称。
通常,它会在宿主的可用内存不足时发生,并触发 Linux 内核底层的 killer 机制。
解决建议
在一般情况下,我们通过创建虚拟交换空间以解决此类问题。
但请注意,若你准备的虚拟内存物理映射文件或分区使用的物理设备的IOPS性能较差,将可能影响你整机的运行速度。
若你对整机速度或稳定性的要求较高,则不必继续阅读,请使用物理方式,例如加装内存条以解决该问题。
创建虚拟交换空间及应用
这里使用文件形式以作为虚拟交换文件。
dd if=/dev/zero bs=1M count=1000 of=/swap1g # Create empty file
mkswap /swap1g # init
chmod 0600 /swap1g # for security
swapon /swap1g # Enable swapfile
Code language: PHP (php)
注意,若宿主运行的内核或虚拟服务器提供商没有在内核中启用该功能,你可能无法通过上述命令完成。
警告,虽然这是一个相对中性的解决方法,你仍不应将该虚拟交换空间的大小设置过大,无论是使用何种基于物理设备的虚拟交换空间方式,除非你对你的物理设备的IOPS性能相当自信。
提示,以文件形式映射并非唯一方法。
如何自动应用该虚拟交换空间
将虚拟交换空间写入文件系统表(fstab)
echo "/swap1g swap swap defaults 0 0" >> /etc/fstab
Code language: JavaScript (javascript)
限制使用虚拟交换空间的权重比例
一般情况下,宿主自带的物理内存响应速度要比映射的虚拟内存快得多。
为避免可能导致的性能损耗,建议对其设置最小比例。
echo "vm.swappiness=1" >> /etc/sysctl.conf # Write conf file
sysctl -p # Apply
Code language: PHP (php)
完成
经过上述操作后,你的系统应会减少出现oom的情况。
了解 Starx's Home 的更多信息
Subscribe to get the latest posts sent to your email.
0 条评论