阿里云ECS的swap到底要不要开?内存不够时加swap真能救急吗?
直接给结论:小内存的阿里云ECS(2G及以下)建议开一个1-2G的swap作为兜底,4G以上内存的机器可以酌情不开,但绝不能把swap当成内存不够的长期解决方案。swap只能救急,救不了穷。
- 为什么要开swap:阿里云大部分官方镜像默认没有启用swap。一旦物理内存耗尽,内核的OOM Killer会直接杀掉占用内存最大的进程,数据库、Web服务常常第一个中招,业务莫名其妙挂掉。有swap兜底,至少给系统留了一点缓冲空间,不至于一激灵就崩。
- swap的代价要清楚:swap在云盘上,读写速度比内存慢几个数量级。进程一旦频繁换入换出(swappiness过高或内存严重不足),服务器会卡到怀疑人生。所以swap是”保命的 parachutes”,不是”性能扩展包”。
- 怎么开:依次执行
fallocate -l 2G /swapfile、chmod 600 /swapfile、mkswap /swapfile、swapon /swapfile,再写入/etc/fstab保证重启后生效。建议把vm.swappiness调到10-20,让内核尽量先用内存。 - 多大合适:经验值是内存2G以下配1-2G swap,4G内存配1G即可,8G以上基本可以不开或只留1G。腾讯云CVM的很多镜像(如TencentOS Server)默认就带swap,阿里云ECS则需要自己动手,这一点新手要注意差异。
- 治本还是看监控:如果free命令显示swap长期被大量占用,说明真实内存不够了,正确做法是升配或者用阿里云云监控设置内存告警,提前扩容,而不是加大swap硬撑。腾讯云对应方案是在云监控里配置内存告警策略,思路一样。
- 注意:swap文件不要建在本地盘或机械型云盘上,建议放ESSD云盘,IOPS才有保障。
- 注意:不要指望swap能替代升配,频繁用swap的机器响应延迟会明显变高。
- 注意:修改fstab时格式写错会导致重启后无法挂载,改前先备份一份。
总结:swap是ECS小内存机器的一道保险丝,值得开、要调低swappiness,但它只是缓冲不是解药。真正内存吃紧时,老老实实升配或迁移到更大规格实例才是正道。
| 方案 | 参考价位 | 适用场景 |
|---|---|---|
| 2核2G ECS | 活动价低至百元级/年 | 个人博客、学习机 |
| 2核4G ECS | 百元至数百元/年 | 小型网站、轻量应用 |
| 腾讯云轻量 2核4G | 同档活动价相近 | 新手一体化建站 |
具体配置价格以阿里云、腾讯云官方活动页实时价格为准。
