Back to Forum Re New

[MW] 【MW-Panel 老服务器负载 100% 排查与处理记录】

【MW-Panel 老服务器负载 100% 排查与处理记录】

环境:

硬件 1核 CPU / 约2GB内存 / 60GB SSD

软件  OpenResty + PHP 5.3 + MySQL 5.7

网站:www.ceqmap.com

一、现象

MW 面板显示“负载状态 100%,运行堵塞”。

运行 uptime,严重时:load average: 2.74, 1.80, 1.30


1核服务器负载长期明显超过1,说明任务存在排队。

二、排查

1. 看实时负载: uptime

2.  看进程: top

当时内存、Swap、磁盘 I/O 无明显异常,但 PHP-FPM 进程较多,MySQL持续工作。

3.  看最近访问: tail -n 50 /www/wwwlogs/www.ceqmap.com.log

4.  统计高频 IP: tail -n 10000 /www/wwwlogs/www.ceqmap.com.log | awk
    ‘{print $1}’ | sort | uniq -c | sort -nr | head -20

5.  统计高频 URL: tail -n 10000 /www/wwwlogs/www.ceqmap.com.log | awk
    ‘{print $7}’ | sed ’s/?.*//’ | sort | uniq -c | sort -nr | head -20

6.  统计 User-Agent: tail -n 10000 /www/wwwlogs/www.ceqmap.com.log |
    awk -F’“’ ‘{print $6}’ | sort | uniq -c | sort -nr | head -20

7.  只统计返回 200 的 IP: tail -n 10000 /www/wwwlogs/www.ceqmap.com.log
    | awk ‘$9==200 {print $1}’ | sort | uniq -c | sort -nr | head -20


三、原因

大量爬虫集中访问论坛 PHP 动态页面,使 PHP-FPM 和 MySQL负载升高。


主要包括: GPTBot AhrefsBot meta-externalagent Amazonbot,


其中最近10000条日志中 Amazonbot 一度有575条请求。

四、处理

www.ceqmap.com 的 OpenResty/Nginx server 配置中加入:

阻止高负载爬虫,避免占用 PHP/MySQL

if ($http_user_agent ~*
“(GPTBot|AhrefsBot|meta-externalagent|Amazonbot)”) { return 403; }

保存配置后验证:

tail -n 1000 /www/wwwlogs/www.ceqmap.com.log | grep -Ei
‘GPTBot|AhrefsBot|meta-externalagent|Amazonbot’ | tail -20

正常应看到: HTTP 403 请求耗时基本 0.000

说明 OpenResty 已在进入 PHP/MySQL 前直接拦截。

五、结果

处理前: load average: 2.74, 1.80, 1.30

处理后

逐步下降: 0.49, 1.24, 1.19 1.23, 0.95, 0.99 最终: 0.32, 0.75,0.90

负载恢复正常。

六、以后再次出现“负载100%”

以下顺序:

1. uptime 看负载

2. top 看CPU、内存、PHP-FPM、MySQL

3. tail 日志看最近请求

4. 统计高频 IP / URL /
User-Agent 5. 确认爬虫后在 Nginx/OpenResty 层直接 403 6. 等几分钟再次
uptime

不要一看到负载100%就立即重装系统、恢复备份、升级 PHP 或更换 VPS。

结论:

服务器本身没有明显故障,主要是爬虫大量访问老论坛动态 PHP页面。通过 OpenResty 在 PHP/MySQL
之前拦截高负载爬虫后,1核服务器负载恢复正常。

备注: 本站老程序需要 PHP 5.3,不能因为负载问题随意升级 PHP。
EQ中文世纪地图集地址:
www.ceqmap.com
第二部分、负载 100%  的解决



MW 面板出现“负载 100% / 运行堵塞”处理方法

服务器配置:
1核  CPU / 2G内存 /60G SSD
MW-Panel + OpenResty
网站:www.ceqmap.com
PHP:5.3(网站必须使用,不升级)


按之前的顺序,一步一步查:

① uptime 看负载 → ② top 看谁占 CPU → ③ 日志看请求 → ④ 查高频 IP → ⑤ 查高频 URL。

你这台机器是 1 核 CPU,所以 load average 如果长期明显超过 1,就值得继续往下查。


【一、先看服务器负载】

SSH 登录服务器,执行:

uptime

再执行:

top

重点看:
1. load average
2. CPU
3. php-fpm
4. mysqld

本机只有 1 核。
如果 load average 长期超过 1,说明服务器比较忙。


==================================================
【二、检查是不是爬虫大量访问】
==================================================

执行:

tail -n 50 /www/wwwlogs/www.ceqmap.com.log

如果看到同一秒出现大量 GET 请求,
尤其大量访问:

/forum/forumdisplay.php
/forum/index.php
/bbs/forumdisplay.php
/rfdkp/viewitem.php
/fddkp/viewraid.php

并出现 GPTBot、AhrefsBot、meta-externalagent 等,
很可能是爬虫导致。


==================================================
【三、找访问最多的 IP】
==================================================

执行:

tail -n 10000 /www/wwwlogs/www.ceqmap.com.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -20

如果少数 IP 出现几百、几千次,要重点检查。


==================================================
【四、找访问最多的网页】
==================================================

执行:

tail -n 10000 /www/wwwlogs/www.ceqmap.com.log | awk '{print $7}' | sed 's/?.*//' | sort | uniq -c | sort -nr | head -20

如果大量集中在 PHP 动态页面,
很容易拖累 PHP-FPM + MySQL。


==================================================
【五、目前已经设置的爬虫拦截】
==================================================

MW面板 →
网站 →
www.ceqmap.com →
设置 →
配置文件

目前配置中已经加入:

if ($http_user_agent ~* "(GPTBot|AhrefsBot|meta-externalagent)") {
    return 403;
}

作用:

GPTBot
AhrefsBot
meta-externalagent

直接由 OpenResty 返回 403,
不再进入 PHP 5.3 和 MySQL。


==================================================
【六、检查拦截是否正常】
==================================================

执行:

tail -n 1000 /www/wwwlogs/www.ceqmap.com.log | grep -Ei 'GPTBot|AhrefsBot|meta-externalagent' | tail -20

看到:

403

说明拦截成功。

如果还是:

200

说明拦截没有生效。


==================================================
【七、处理后观察】
==================================================

等待 5~10 分钟,再执行:

uptime

并查看:

MW面板 → 首页 → 负载状态

正常目标:

负载状态:绿色“运行正常”
CPU:不要长期接近100%
内存:不要长期接近100%

本机1核,所以 load average:
低于1:比较正常
长期高于1:服务器比较忙
长期接近2或更高:需要继续排查


==================================================
【八、如果以后又变100%】
==================================================

不要马上:

× 重装系统
× 恢复网站备份
× 升级 PHP
× 购买新云主机

先重新做:

1. uptime
2. top
3. 查看最近日志
4. 统计访问最多IP
5. 统计访问最多URL
6. 找新的高频爬虫
7. 再决定是否增加拦截规则


==================================================
【特别注意】
==================================================

本网站程序必须使用 PHP 5.3。

不要因为负载高就升级 PHP,
否则老网站程序可能无法运行。

2026-09-18 本次故障:

MW负载:
100%“运行堵塞”

发现大量机器人访问动态PHP页面

OpenResty屏蔽
GPTBot
AhrefsBot
meta-externalagent

机器人请求由200变成403

MW负载降至65%

恢复绿色“运行正常”

结论:

本次不是云主机损坏。
主要原因是高频爬虫访问PHP动态页面,
导致1核服务器的 PHP-FPM + MySQL 负载升高。

以后再出现类似情况,优先查网站访问日志。
==================================================
EQ中文世纪地图集地址:
www.ceqmap.com
Back to Forum