首页负载曲线超50%需立即排查:CPU、内存、磁盘IO是卡顿主因;50~90%查资源占用进程,90%以上须紧急干预;配合top -p、SHOW PROCESSLIST等命令精准定位业务异常。

直接看首页负载曲线,50%以上就要盯进程
宝塔面板首页不是摆设——登录后第一眼就该扫清 CPU、内存、磁盘 IO 这三条线。真正卡顿或响应慢,90% 以上都藏在这三处。百分比不是绝对值,而是资源争抢的“紧张度”信号:50% 以下基本无感;50~90%得查谁在吃资源;90~100%说明请求排队、PHP 响应超时、MySQL 查询卡死已成常态,必须立刻干预。
- 别只信首页平均值:点击 CPU 或内存图表右上角的「详情」,能拉出最近 24 小时峰值时间点,精准定位异常发生时刻
- 磁盘
IO wait高但 CPU 使用率低?大概率是 MySQL 慢查询或日志刷盘太猛,不是 CPU 不够,是硬盘在拖后腿 - 网络流量突增不等于被攻击:先看
iftop -P 80,443确认是不是某个 URI(比如 /api/report)被高频轮询,再查 Nginx 访问日志里request_time超过 2s 的条目
进【监控】页抓实时进程,top -p PID 是必补动作
首页发现内存飙到 92%,点开左侧【监控】→【服务器监控】,鼠标悬停内存曲线,面板会自动标出当前占用最高的 5 个进程。但这里只给 PID 和粗略百分比,真要定位问题,得立刻切 SSH 补一手:top -p PID —— 这才是看清它到底在干啥的关键一步。
-
top -p后按Shift+H切换线程视图:PHP-FPM 往往一个 master 进程底下挂几十个 worker,单看 master PID 会误判,得看具体 worker 线程的%CPU和VIRT(虚拟内存) - MySQL 占用高?别急着重启:先
mysql -uroot -p -e "SHOW PROCESSLIST;",重点看State是Sending data还是Locked,前者大概率 SQL 没走索引,后者可能是表级锁没释放 - Redis 内存爆了?
redis-cli info memory查used_memory_human和maxmemory_human,但更要紧的是mem_allocator是否为jemalloc——用libc分配器时小 key 多极易内存碎片化
用【进程管理】结束僵尸,但别乱 kill -9 PHP-FPM
左侧菜单【安全】→【系统工具】→【进程管理】,确实能点「结束进程」,但它本质是调用 kill -15(优雅终止)。对 PHP-FPM 来说,这会等当前请求处理完再退出;而直接在终端敲 kill -9,可能中断正在写数据库的事务,导致数据不一致。
- 看到一堆
php-fpm: pool www占用高,优先去【网站】→ 对应站点 →【PHP 设置】→「最大子进程数」是否设成 50 甚至 100?小配置机器设太高反而引发频繁 fork,加重负载 - 有进程显示用户为
nobody或www-data且无法结束?大概率是 CGI 模式下脚本崩溃残留,需结合ps aux | grep -v grep | grep "defunct"找Z(zombie)状态进程,父进程不回收就得重启对应服务(如 Nginx) - 别忽略「系统进程」里的
rsyslogd或systemd-journald:如果网站日志狂打 warning,它们可能因磁盘满或权限问题卡在写入队列,表现为高 IO + 高 CPU
装插件前先确认瓶颈类型,别让监控本身变负担
软件商店里「系统监控」「网站监控报表」看着很全,但它们本身要常驻采集、写库、生成图表——低配机器(1核1G)装俩插件,光是定时任务就能吃掉 15% CPU。监控是为了定位问题,不是为了制造新问题。
- 查爬虫攻击?先用【网站监控报表】看「蜘蛛统计」里百度/谷歌占比是否骤降到 5% 以下,同时「URI 统计」里出现大量
/wp-login.php或/admin/login,这时再装「Nginx 防火墙」加规则才有效 - 想看 Redis key 分布?
redis-cli --bigkeys比插件更轻量,且能直接告诉你哪个 key 占了 80MB;插件若每秒扫全库,反而触发 Redis 阻塞 - 「任务管理器」插件在宝塔 8.x 中默认不兼容 ARM 架构(如树莓派服务器),强行安装会导致面板卡死,此时只能靠原生命令
htop或glances
真正难的不是看到哪个进程占得多,而是判断它「该不该占这么多」——同一个 mysqld 进程,查千万级订单表没索引时占 80% CPU 是病态,跑定时归档任务时占 70% 却是正常。资源数字背后,永远得贴着业务逻辑去看。










