首页主机资讯ubuntu swap内存泄漏怎么办

ubuntu swap内存泄漏怎么办

时间2026-01-22 00:37:08发布访客分类主机资讯浏览546
导读:Ubuntu 出现 Swap 占用持续增长的处理步骤 一、先判断是真泄漏还是正常换出 观察整体内存与交换:运行 free -h,关注 available 是否持续下降、Swap 是否被动增长。 查看是否触发 OOM:运行 journalc...

Ubuntu 出现 Swap 占用持续增长的处理步骤

一、先判断是真泄漏还是正常换出

  • 观察整体内存与交换:运行 free -h,关注 available 是否持续下降、Swap 是否被动增长。
  • 查看是否触发 OOM:运行 journalctl -k | grep -i oom,若出现 “Out of memory: Kill process …”,说明内存压力已触发内核 oom‑killer
  • 观察换入换出:运行 vmstat 1 10,若 si/so(swap in/out)持续不为 0,说明系统正在频繁换页。
  • 快速确认是否“内存还有很多但 Swap 很高”:free -havailable 充足而 Swap 占用高,常见于“进程把不活跃页换出”或“部分进程占用 Swap 较多”。

二、定位占用 Swap 的进程

  • 一键列出占用 Swap 最多的进程(单位 MB):
    sudo sh -c 'for i in /proc/[0-9]*; do pid=${ i##*/} ; if [ "$pid" -gt 100 ]; then awk -v pid="$pid" "/Swap:/{ a+=$2} END { if (a> 0) print pid, a/1024 \"M\"} " /proc/"$pid"/smaps 2> /dev/null; fi; done | sort -k2nr | head -n 10'
  • 实时观察可疑进程:watch -n 1 "ps aux | grep < PID> "
  • 查看进程详细内存映射与脏页:pmap -x < PID> ,关注 RSS[ anon ] 段是否持续增长。
  • 若怀疑内核或驱动:slabtop -ocat /proc/meminfo 观察 Slab 等内核缓存是否异常增长。
  • 辅助工具:用 smem -P < 进程名> PSS 聚合更直观;lsof -p < PID> 辅助排查文件映射与资源占用关联。

三、应急处理与止损

  • 温和方式(优先):重启“问题进程”以释放其占用的 Swap(对无状态服务尤为有效)。
  • 快速清理 Swap(会短时增加 I/O):先 sync 落盘,再 echo 3 | sudo tee /proc/sys/vm/drop_caches 清理页缓存,随后执行 sudo swapoff -a & & sudo swapon -a。若 swapoff 报 “Cannot allocate memory”,说明空闲内存不足以回收 Swap,先停占用最高的进程或扩容内存/增加 Swap 后再执行。
  • 临时抑制换页倾向(治标不治本):sudo sysctl -w vm.swappiness=10(范围 0–100,默认多为 60;数值越低越倾向少用 Swap)。
  • 应急扩容 Swap(避免立刻 OOM):例如新增 16GB 交换文件:
    sudo fallocate -l 16G /swapfile & & sudo chmod 600 /swapfile & & sudo mkswap /swapfile & & sudo swapon /swapfile,并在 /etc/fstab 加入 /swapfile none swap sw 0 0 持久化。

四、根因修复与长期优化

  • 应用层定位:
    • C/C++ 程序用 Valgrind(memcheck)定位泄漏:valgrind --leak-check=full ./your_app;编译时建议带 -g 便于定位。
    • Java/容器等场景注意“堆外内存”(DirectBuffer、MappedByteBuffer、JNI、线程栈、Metaspace)泄漏,结合 JVM 工具与系统级工具(如 pmap/smem)交叉验证。
  • 内核与数据库场景:
    • 数据库等大内存服务可评估 HugePagesTransparent HugePages(THP):必要时关闭 THP 以减少延迟抖动(echo never > /sys/kernel/mm/transparent_hugepage/enableddefrag),并按需配置 vm.nr_hugepages
    • 结合监控(如 Prometheus + node_exporter)建立内存与 Swap 的基线告警,持续观察 available、Swap、si/so 的趋势。
  • 重要提示:清理缓存与重启进程只能“止血”,要彻底解决需修复应用或配置的内存问题;在性能敏感型服务上,应合理设置 vm.swappiness、规划 Swap 容量,并谨慎使用/调优 HugePages/THP

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: ubuntu swap内存泄漏怎么办
本文地址: https://pptw.com/jishu/789307.html
ubuntu swap如何禁用和启用 Linux中ThinkPHP版本如何升级

游客 回复需填写必要信息