1. 首页 > 技术教程 > 正文

VPS 内存占用异常怎么查?AI Agent 分析 free、ps 和进程占用

VPS 内存飙升导致服务卡死,是运维中最头疼的问题之一,特别是在部署了 Ollama 或 n8n 这类高资源消耗工具后。主机选今天不讲虚的,直接教你如何用 `free` 和 `ps` 命令排查,并利用 AI Agent 辅助分析进程异常,快速定位内存泄漏源头。

zhujixuan TASK 191

VPS 内存占用基础排查

很多人一看 `top` 里 `Mem` 满了就慌,其实 Linux 的内存管理机制会把空闲内存拿去做缓存和缓冲。别急着杀进程,先看 `free` 命令的真实数据。

执行以下命令查看人类可读的内存详情:

free -h

关注 `available` 这一行,它代表了在不发生 Swap 的情况下,新启动程序还能用的真实内存。如果 `available` 接近 0,或者 `Swap` 的 `Used` 在持续增加,那才是真的内存告警。

如果发现内存确实被吃光了,下一步就是找出谁是罪魁祸首。

利用 AI Agent 分析进程占用

传统的排查方式是手动敲 `ps aux –sort=-%mem | head -n 10` 然后肉眼筛。如果你手头有 Claude Code、Codex 或本地运行的 LLM,可以把这个繁琐过程交给 AI Agent 处理,效率高很多。

获取进程快照

先把当前的进程状态导出来:

ps aux –sort=-%mem | head -n 20 > mem_snapshot.txt
cat mem_snapshot.txt

构建分析提示词

把 `mem_snapshot.txt` 的内容丢给 AI Agent,配合以下 Prompt:

> “我正在运维一台 VPS,最近内存占用异常。附件是当前内存占用最高的 20 个进程列表。请帮我分析:
> 1. 哪些进程的内存占用(RSS 或 VSZ)不合理?
> 2. 是否有明显的僵尸进程或异常的 Python/Node 子进程?
> 3. 如果我在运行 Docker 或 AI 模型(如 Ollama),这些数值是否正常?
> 4. 给出具体的排查建议或需要 kill 的进程名。”

AI Agent 能迅速识别出那些因为代码 Bug 导致内存泄漏的 Python 脚本,或者忘记关闭的 n8n 工作流进程。比如它可能会提醒你:“注意 PID 1234 这个 Python 进程,RSS 占用了 40%,且运行时间过长,疑似内存泄漏。”

Docker 与 AI 模型内存泄漏排查

现在很多朋友在 VPS 上跑 AI Agent 或知识库,Docker 容器往往是内存大户。如果宿主机内存莫名被吃光,务必检查 Docker 的资源使用情况。

查看 Docker 实时资源

docker stats –no-stream

这个命令能列出所有容器的 CPU、内存占用和网络流量。重点看 `MEM %` 和 `MEM USAGE / LIMIT`。

设置资源限制

很多部署 Ollama 或 Open WebUI 的用户,容易犯“裸奔”的错误,不给容器设内存上限。一旦模型加载过多或并发请求激增,VPS 直接 OOM(Out of Memory)。

在 `docker run` 或 `docker-compose.yml` 中必须加限制:

yaml
services:
ollama:
image: ollama/ollama
deploy:
resources:
limits:
memory: 4G # 限制最大 4GB 内存

检查系统日志

如果系统已经发生过卡死或重启,检查内核日志看是不是 OOM Killer 主动杀了进程:

dmesg | grep -i "killed process"

这会显示系统因为内存不足牺牲了哪个进程。如果发现杀掉的是 MySQL 或 Nginx 这种核心服务,说明你的 AI 模型占用了过多资源,需要调整模型参数或增加 Swap。

老鸟叮嘱

1.Swap 不是万能药:跑 AI 模型时,如果内存爆了去用 Swap,性能会掉成渣,甚至导致 VPS 负载过高被提供商停机。建议至少预留 2GB 纯物理内存给系统。
2.小心僵尸进程:AI Agent 工作流如果编写不当,可能会产生大量僵死的子进程。用 `ps aux | grep defunct` 检查,发现有僵尸进程就重启对应的主服务。
3.不要用 Root 跑所有服务:特别是 n8n 这种连接外部 API 的工具,权限太高风险大,一旦被攻破,整个 VPS 内存都可能变成挖矿矿机。
4.定期清理日志:`/var/log` 下的日志如果不轮转,几个月就能吃掉几个 G,这也是“内存占用异常”的常见误判原因。

FAQ

Q1:VPS 只有 2GB 内存,能跑 Ollama 部署 AI Agent 吗?
A:非常勉强。建议跑量化后的 7B 以下小模型(如 Phi-3 或 Qwen-7B-Int4),并且必须开启 2GB-4GB 的 Swap,否则大概率 OOM 崩溃。

Q2:为什么 `free` 显示还有剩余,但系统还是报警?
A:可能是 `Available` 确实还有,但 `Slab`(内核数据结构)占用过高,或者发生了严重的内存碎片化。这时候 `dmesg` 查看内核日志最准。

Q3:AI Agent 分析日志安全吗?会不会泄露数据?
A:如果你使用的是云端 AI(如 Claude、ChatGPT),不要直接把完整的 `ps aux` 或包含敏感环境变量、API Key 的日志贴进去。先脱敏,只保留进程名、CPU、内存和时间字段。

Q4:Docker 容器退出了,内存没释放怎么办?
A:这是 Docker 的已知特性,有时 cgroup 的缓存不会立即归还给 OS。执行 `systemctl restart docker` 可以强制释放,但要注意这会重启所有容器。

Q5:如何一键找出占用内存最高的前 5 个进程?
A:使用命令 `ps aux –sort=-%mem | head -n 6`(第一行是表头)。

排查内存问题不能只看表面数据,结合 AI Agent 的分析能力,能帮你从复杂的进程列表中快速揪出异常点,比单纯靠经验盲猜效率高得多。平时做好资源限制和日志监控,才能保证 VPS 稳定运行。

转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/10096.html 商家投稿邮箱:zhujixuanblog@qq.com