Apache2服务器www-data进程过多导致WordPress网站无法运行求助
WordPress站点大量www-data进程导致无法访问排查解决方案
问题现象截图:
第一步 定位进程异常根源
- 执行
ps aux | grep www-data,确认进程是否为正常的web服务进程,排除恶意进程伪装的情况,同时记录异常进程的运行时长、资源占用占比 - 执行
lsof -p [对应异常进程PID],查看进程正在读写的文件、建立的网络连接,定位触发进程异常的具体站点、脚本路径 - 执行
netstat -anp | grep www-data,统计进程的请求来源,确认是否存在批量外部请求触发进程暴涨
第二步 排查WordPress侧触发原因
- 核对近期站点变更记录,是否有新安装、更新的主题或插件,大量未做性能优化的自定义插件、主题会在触发逻辑时生成大量php进程耗尽资源
- 查看web服务访问日志:Nginx默认日志路径
/var/log/nginx/access.log,Apache默认日志路径/var/log/apache2/access.log,统计短时间内请求频率最高的页面/接口,确认是否存在未缓存的动态页面被高频调用的情况 - 检查是否存在恶意攻击请求:常见的wp-login.php爆破、xmlrpc.php批量调用都会持续触发php进程生成,无拦截的情况下会快速占满服务器资源
第三步 修复方案
临时应急恢复
如果站点已经完全无法访问,优先执行以下命令快速恢复服务:
- 强制终止所有异常www-data进程:
killall -9 www-data - 重启web服务和php解析服务:
systemctl restart nginx、systemctl restart php<你的php版本>-fpm(比如php7.4-fpm,根据实际安装版本调整)
永久修复
- 配置页面缓存:安装WP Super Cache、W3 Total Cache等缓存插件,将动态页面转静态返回,大幅降低php进程的调用频率
- 限制php-fpm最大进程数:修改php-fpm配置文件中的
pm.max_children参数,1核2G服务器建议设置为10-15,2核4G服务器建议设置为20-30,避免进程无限生成耗尽服务器资源 - 拦截恶意请求:在web服务配置中禁止xmlrpc.php非必要访问,给wp-admin后台添加IP访问限制,安装登录次数限制插件拦截爆破请求
- 定期扫描站点文件,排查是否存在webshell等恶意脚本,恶意脚本通常会主动生成大量进程占用服务器资源
内容的提问来源于stack exchange,提问作者Shane Dushyantha
相关产品推荐
相关产品推荐

