当前位置:首页 >  IDC >  服务器 >  正文

服务器卡了先别重启:top命令五个数字,一分钟定位病根

 2026-08-31 14:40  来源: 互联网   我来投稿 撤稿纠错

  一键部署OpenClaw

服务器一卡,很多人的第一反应是重启。重启确实能“解决”问题,但病根没找,明天同一时间照样卡。top命令开着看一分钟,负载高在哪基本就有数了。

第一眼看load average,三个数字分别是1分钟、5分钟、15分钟负载。判断标准拿CPU核数做参照:4核机器,负载4算满载,8就是超载。1分钟远高于15分钟说明是突发,正在发生或刚发生;三个数都高是持续性压力,该扩容或找病根了。

top - 20:15:33 up 45 days, load average: 8.32, 5.10, 2.45
Tasks: 120 total, 3 running
%Cpu(s): 25.0 us, 5.3 sy, 0.0 ni, 62.5 id, 7.2 wa, 0.0 hi, 0.0 si
# 读法:us用户态(应用) sy内核态 wa等磁盘 id空闲

第二行看%Cpu(s)的构成,这行直接告诉你瓶颈类型:us高是应用在算,查PHP进程和慢SQL;sy高是系统调用频繁,常见于频繁创建销毁进程;wa高是磁盘跟不上,CPU在干等IO;id高但网站慢,那问题多半不在这台机器上,查下游服务或者网络。

第三步找出元凶进程。按P键按CPU排序(默认就是),按M键按内存排序。看%CPU和%MEM两列,重点盯占用异常的php-fpm、mysqld,多个php-fpm worker都接近100%多半是慢查询循环;单个mysqld吃满CPU就是数据库在硬扛。

# top里按1展开每个核的负载(判断单核瓶颈)
# 交互键:P按CPU排序 M按内存排序 1展开多核 c显示完整命令

# 常用组合:看是哪个php-fpm吃CPU
top -c
# 然后按P,盯着最上面的进程,记下PID
cat /proc/PID/cmdline # 确认是哪个站点(配合pm.status_path更好用)

PHP-FPM有个好东西叫status页面,php.ini开启pm.status_path,浏览器里能看到每个worker当前在跑什么请求。配合top定位,哪个接口拖垮了FPM一目了然,比瞎猜快十倍。

最后纠正一个习惯:load average高不一定是CPU不够。负载统计的是“正在运行加等待IO的进程数”,磁盘打满时load也能上几十,CPU却很闲。所以top里wa和load要一起看,别见负载高就嚷着加CPU。

申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!

相关标签
php教程
服务器

相关文章

  • LIMIT 100000,20慢到超时?MySQL深分页的三种解法

    后台导出、爬虫采集、或者用户把列表翻到几千页——只要LIMIT的偏移量上了十万,查询就会肉眼可见地卡。很多人以为是数据太多撑不住,其实是MySQL的工作方式太老实:LIMIT100000,20的意思是把前100020行都取出来,扔掉前100000行,只返回20行。偏移量越大,白干的活越多。先复现确认

    标签:
    php教程
    mysql
  • 千万级大表加索引不敢动?Online DDL和pt-online-schema-change实测

    大表加索引是站长的经典恐惧:ALTERTABLE一执行,表被锁住,网站瞬间打不开,KILL掉还要回滚几小时。以前确实是这样,MySQL5.6之后OnlineDDL成熟了,加索引这类操作可以在线做,执行期间允许并发读写。但“可以在线”不等于“随便什么时候都行”,坑还是有的。OnlineDDL的原理:操

    标签:
    php教程
    mysql
  • 读多写少的站,主从复制加读写分离,一台变三台

    资讯类、内容站的流量特点很一致:读请求是写请求的几十上百倍。一台MySQL扛不住时,主从复制把读压力分给从库,主库专心写,是最省钱的扩容路径——不用换机器、不用改表结构,加从库就行。前提是主从复制先搭好(这个之前写过:主库开binlog、建同步账号,从库CHANGEMASTERTO)。复制跑通后,剩

    标签:
    php教程
    mysql
  • 容器删了数据就没了?Docker卷的备份恢复,别等出事才想起来

    用Docker跑MySQL的站长,最该问自己的一个问题:数据库文件现在能被备份脚本摸到吗?数据在卷(volume)里,如果卷是匿名卷、或者备份脚本只tar了网站目录,那数据库其实处于裸奔状态,容器一坏就只能恢复到上次手动导出的时点。先搞清楚自己的数据在哪。Docker存数据两种方式:bindmoun

    标签:
    php教程
    mysql
  • docker pull龟速还磁盘报警?镜像加速和空间清理一次讲清

    Docker用久了两大顽疾:拉镜像慢得像挂了,以及/var/lib/docker目录悄悄吃掉几十G直到磁盘写满、整站报错。这两件事都有标准解法,十分钟配完。先说拉取慢。DockerHub在国内直连基本不可用,需要配镜像加速器。各家云厂商都提供免费加速地址,阿里云的控制台里有一串专属地址,填到daem

    标签:
    php教程

热门排行

信息推荐