小内存云服务器救急:用 swap 文件防止进程被 OOM 杀掉
【摘要】 小内存云服务器救急:用 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)