阿里云ECS的swap到底要不要开?内存不够时加swap真能救急吗?

阿里云上云采购季 2核2G云服务器99元/年 续费同价

阿里云ECS的swap到底要不要开?内存不够时加swap真能救急吗?

直接给结论:小内存的阿里云ECS(2G及以下)建议开一个1-2G的swap作为兜底,4G以上内存的机器可以酌情不开,但绝不能把swap当成内存不够的长期解决方案。swap只能救急,救不了穷。

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

总结:swap是ECS小内存机器的一道保险丝,值得开、要调低swappiness,但它只是缓冲不是解药。真正内存吃紧时,老老实实升配或迁移到更大规格实例才是正道。

方案 参考价位 适用场景
2核2G ECS 活动价低至百元级/年 个人博客、学习机
2核4G ECS 百元至数百元/年 小型网站、轻量应用
腾讯云轻量 2核4G 同档活动价相近 新手一体化建站

具体配置价格以阿里云、腾讯云官方活动页实时价格为准。

发表评论