小内存云服务器救急:用 swap 文件防止进程被 OOM 杀掉

举报
yd_215738027 发表于 2026/11/04 20:30:57 2026/11/04
【摘要】 小内存云服务器救急:用 swap 文件防止进程被 OOM 杀掉1 核 1G、2G 这类入门云服务器,跑个数据库加一个 Web 服务,内存很容易吃紧。内存一满,Linux 的 OOM Killer 会直接杀掉占内存最多的进程,常常就是 MySQL 或你的应用。加一个 swap 文件,是成本最低的缓冲办法。 1. 先确认现状free -hswapon --show如果 Swap 一行全是 0,...

小内存云服务器救急:用 swap 文件防止进程被 OOM 杀掉

1 核 1G、2G 这类入门云服务器,跑个数据库加一个 Web 服务,内存很容易吃紧。内存一满,Linux 的 OOM Killer 会直接杀掉占内存最多的进程,常常就是 MySQL 或你的应用。加一个 swap 文件,是成本最低的缓冲办法。

1. 先确认现状

free -h
swapon --show

如果 Swap 一行全是 0,swapon --show 没有输出,说明还没有 swap。

2. 创建 swap 文件

以 2G 为例:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

chmod 600 很重要,swap 里可能有内存中的敏感数据,不能让其他用户读到。部分文件系统不支持 fallocate,可以改用:

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

3. 开机自动挂载

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

改完用 sudo swapoff /swapfile && sudo swapon -a 测一下,确认 fstab 没写错。

4. 调整 swappiness

默认值一般是 60,意味着系统比较积极地使用 swap。服务器上更希望优先用物理内存:

sudo sysctl vm.swappiness=10
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swap.conf

5. 怎么判断够不够

vmstat 1 5

重点看 si、so 两列(每秒换入换出)。偶尔有数值没关系;如果一直很高,说明内存真的不够,swap 只是在拖时间,应该考虑优化程序或升级规格。

小结

  • swap 是兜底,不是扩内存,磁盘比内存慢得多。
  • 小内存实例建议 swap 设为内存的 1~2 倍。
  • 配合 swappiness=10,平时几乎不用,关键时刻能避免服务被杀。

续费前把内存用量盘清楚,也能帮你判断到底需不需要升配,省下一笔钱。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。