服务器老是卡死内存CPU跑满?三步排查法帮你定位问题

做网站的都遇到过这种情况——服务器突然卡死,SSH 登录都费劲,更别提网站能不能访问了。

别慌,今天分享一套实战排查思路,帮你快速定位问题进程,对症下药。


第一步:top 命令看全局

登录服务器之后,第一件事敲 top。

这个命令会实时显示当前所有进程的资源占用情况,按 CPU 和内存排序,哪些进程在"吃"你的资源,一眼就能看到。

不过 top 有个缺点:进程多的时候看起来比较乱,不够直观。


第二步:ps 命令精准排序

如果 top 看不清楚,用 ps 命令更直接:

ps aux --sort=-%cpu | head -30

这条命令把所有进程按 CPU 使用率从高到低排序,截取前 30 条。哪个进程占 CPU 最高,直接排在最前面。

想看内存占用排名?换个参数就行:

ps aux --sort=-%mem | head -30

两条命令配合用,CPU 和内存的"元凶"基本跑不掉。


第三步:定位到具体进程后针对性调优

拿我自己的测试服务器来说,排查下来"元凶"是 PHP-FPM。

PHP-FPM 是跑 PHP 网站的核心服务,它的问题是——默认配置下最大进程数(pm.max_children)一般设成 50。

一个 FPM 进程大约占 100M 内存,50 个进程就是 5G。如果你的服务器只有 4G 内存,不卡死才怪。

怎么调?

用宝塔面板的:

  1. 打开「软件商店」→ 找到已安装的 PHP → 点「设置」
  2. 找到 FPM 配置文件
  3. 找到参数 pm.max_children
  4. 把默认值 50 改成 10(或者其他合理值)

⚠️ 注意:别调太低!

如果网站访问量不小,进程数太少会导致请求排队,直接报 502 错误。

这个参数要根据实际访问量来调:

  • 访问量大的站 → 保持较大值或适当增加
  • 测试服务器/低流量站 → 可以调低到 10 甚至更低
  • 核心原则:内存够用 + 不报 502

排查思路总结

步骤 操作 目的
1 top 命令 实时查看资源占用全局
2 ps aux --sort=-%cpu/mem 按 CPU/内存排序定位高占用进程
3 针对性调优配置 根据问题进程调整参数限制资源

写在最后

服务器卡死不可怕,可怕的是不知道问题出在哪。

记住这个排查流程:top 看全局 → ps 排定位 → 针对性调优。大部分资源耗尽问题都能快速找到原因。

像 PHP-FPM 进程泛滥这种问题,改一个参数就能解决,关键是你要先定位到它。


程序员老狼 | 聊城变量网络科技有限公司
十几年全栈开发经验,专注网站、客服系统、自动化方案
有问题随时交流,微信:llike620

posted @ 2026-09-09 10:12  程序员老狼  阅读(28)  评论(0)    收藏  举报