首页主机资讯Ubuntu内存占用高怎么办

Ubuntu内存占用高怎么办

时间2025-11-18 02:20:05发布访客分类主机资讯浏览313
导读:Ubuntu 内存占用高的定位与优化 一 快速判断是否为“假高占用” 先用以下命令查看整体内存与缓存情况: 查看概览:free -h 实时进程:top(按 M 按内存排序)或 htop(更直观) 重点看输出中的 available...

Ubuntu 内存占用高的定位与优化

一 快速判断是否为“假高占用”

  • 先用以下命令查看整体内存与缓存情况:
    • 查看概览:free -h
    • 实时进程:top(按 M 按内存排序)或 htop(更直观)
  • 重点看输出中的 available 字段(可用内存)以及 buff/cache。Linux 会把空闲内存用于 PageCache/Buffers 来加速访问,这并非内存泄漏或异常占用。只有当 available 很低且系统开始频繁换页(见 vmstat 1 的 si/so 列)或应用明显卡顿,才需要干预。

二 快速定位占用最高的进程

  • 使用 top/htop 找出占用内存最高的进程及其 PID,确认是否为异常进程(如失控的子进程、死循环、反复崩溃重启的服务)。
  • 处理步骤:
    • 正常结束:kill < PID>
    • 强制结束:kill -9 < PID> (仅在确认无数据风险时使用)
  • 若是长期问题,检查并精简开机自启与常驻服务:sudo systemctl list-unit-files --type=service,对无关服务执行 sudo systemctl disable < 服务名> ;同时更新系统与驱动:sudo apt update & & sudo apt upgrade & & sudo ubuntu-drivers autoinstall

三 立即可做的缓解措施

  • 清理页面缓存、dentry 和 inode(仅在必要时使用,可能影响性能):
    • 执行:sync & & echo 1 | sudo tee /proc/sys/vm/drop_caches(清理 PageCache)
    • 或:sync & & echo 2 | sudo tee /proc/sys/vm/drop_caches(清理 dentries/inodes)
    • 或:sync & & echo 3 | sudo tee /proc/sys/vm/drop_caches(清理全部三类)
  • 调整内存回收倾向(降低换页概率):
    • 临时:sudo sysctl vm.swappiness=10
    • 永久:在 /etc/sysctl.conf 中加入 vm.swappiness=10 后执行 sudo sysctl -p
  • 启用或增大 ZRAM(压缩内存块,缓解低内存压力):
    • 启用:sudo modprobe zram
    • 查看:lsmod | grep zram
    • 建议配合创建 systemd 服务管理(按需配置),或参考发行版提供的 zram 配置包。

四 若仍高占用的针对性优化

  • 精简系统与服务:
    • 关闭不必要的后台服务与自启项(见第二部分)。
    • 禁用错误报告组件 apport(常驻占用且易触发):echo "enabled=0" | sudo tee /etc/default/apport & & sudo systemctl stop apport
  • 清理系统与包缓存、旧内核与日志:
    • sudo apt-get clean & & sudo apt-get autoremove
    • 列出旧内核:dpkg -l | grep linux-image;确认当前内核:uname -r;删除不再需要的旧版本:sudo apt-get purge < 旧内核版本>
    • 清理日志:sudo find /var/log -type f -name "*.log" -exec truncate -s 0 { } \;
  • 应用层专项(如 Apache 占用高):
    • 优化关键参数:MaxRequestWorkers/ThreadsPerChild、启用 KeepAlive、开启 mod_deflate/mod_cache,必要时用 mod_ratelimit 限流;检查 /var/log/apache2/error.log 与是否存在内存泄漏(可用 valgrind 等工具)。
  • 增加交换空间(物理内存偏小或编译/容器场景):
    • 新建交换文件(示例 512MB):
      • sudo fallocate -l 512M /swapfile
      • sudo chmod 600 /swapfile
      • sudo mkswap /swapfile & & sudo swapon /swapfile
    • 永久生效:在 /etc/fstab 加入 /swapfile none swap sw 0 0
    • 调整 swappiness(见第三部分)以平衡性能与磁盘换页。

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


若转载请注明出处: Ubuntu内存占用高怎么办
本文地址: https://pptw.com/jishu/749652.html
readdir函数返回的dirent结构体详解 Ubuntu系统垃圾怎么彻底清除

游客 回复需填写必要信息