温馨提示×

Swap空间满了会有什么影响

小樊
36
2025-12-20 02:56:59
栏目: 云计算

影响概览

  • 性能显著下降:Swap本质在磁盘上,速度远低于RAM。当Swap已满且物理内存吃紧时,新分配或换出的内存无法再写入Swap,系统会频繁进行内存回收与直接回收,出现卡顿、响应变慢。在IO密集场景,卡顿更明显。
  • OOM与进程异常:若物理内存与Swap同时耗尽,可能触发OOM Killer终止进程,出现应用崩溃、服务不可用,严重时系统可能无法登录宕机
  • 稳定性与可用性风险:数据库、消息队列等对延迟敏感的服务对Swap饱和尤为敏感,可能出现连接超时、查询变慢、线程创建失败等稳定性问题。

是否一定有影响

  • 不一定。若物理内存仍有充足空闲,即使Swap显示100%,通常只是说明“历史冷页被换出”,并不会立刻引发问题;此时系统主要承受的是“曾经发生过换页”的历史代价。
  • 一旦后续内存需求继续增长且物理内存不足,无法再把更多页换出到已满的Swap,就会迅速进入上面的性能劣化与OOM风险状态。

快速判断与常用命令

  • 查看整体内存与Swap:
    • free -h
    • swapon -s
  • 观察进程与内存占用:
    • top / htop
  • 定位占用Swap高的进程:
    • for i in $(cd /proc;ls |grep “^[0-9]”|awk ‘$0>100’); do awk ‘/Swap:/{a=a+$2}END{print ‘“$i”’,a/1024"M"}’ /proc/$i/smaps 2>/dev/null; done | sort -k2nr | head
  • 释放页缓存(仅在确保物理内存充足时执行):
    • echo 3 > /proc/sys/vm/drop_caches(执行后改回 echo 0)
  • 临时关闭/开启Swap(先确保空闲内存可容纳当前Swap内容):
    • swapoff /dev/vda1 && swapon /dev/vda1

应急与长期优化

  • 应急缓解
    • 关闭不必要的进程/服务,释放物理内存
    • 临时扩容Swap:创建Swap文件并启用(示例为新增2GB
      • fallocate -l 2G /swapfile
      • chmod 600 /swapfile
      • mkswap /swapfile
      • swapon /swapfile
      • 写入 /etc/fstab:/swapfile swap swap defaults 0 0
    • 谨慎执行:先确保空闲内存充足,再考虑 swapoff/swapon 以“清空”Swap。
  • 参数与配置
    • 适度降低 vm.swappiness(如设为10)以减少换出倾向:编辑 /etc/sysctl.conf,加入 vm.swappiness=10,执行 sysctl -p。
  • 长期治理
    • 增加物理内存或优化应用内存占用,建立监控与告警,避免反复触发Swap饱和。

0