Subject:
[MW]
【MW-Panel 老服务器负载 100% 排查与处理记录】
[Print]
Author:
我爱崔颖
Time:
2 Days Ago 17:32
Subject:
【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。
Author:
我爱崔颖
Time:
2 Days Ago 17:33
第二部分、负载 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 负载升高。
以后再出现类似情况,优先查网站访问日志。
==================================================
Welvome EQ中文世纪地图集论坛 (http://www.ceqmap.com/bbs/)
Powered by Discuz! 7.0.0