WordPress网站报502/504错误?5步排查修复方案
当WordPress网站出现502 Bad Gateway(错误类型: Bad Gateway, 即“错误的网关”)或者504 Gateway Timeout(错误类型: Gateway Timeout,即, “网关超时”)的情况的时候, 它本质上反映了一个问题, 这个问题是Web服务器软件, 这个软件具体可以是Nginx, 也可以是Apache, 它没有办法从PHP-FPM那里获取到有效的响应内容。
常见的触发原因, 这些原因可以导致上述问题的发生, 包括PHP进程突然出现崩溃的情况, 也可能是脚本执行的时间超过了限定的超时时间, 还有可能是服务器的整体资源已经被耗尽, 再或者是插件以及主题里面的代码发生了相互冲突的现象, 又或者是因为与数据库的连接出现了异常情况。
以下是根据排查优先顺序列出的5个步骤的解决方法, 你可以直接按照这个顺序来进行操作。
第一步:重启PHP-FPM服务
502报错出现得最多的情况, 就是PHP-FPM这个进程突然异常退出了。通过SSH登录到服务器之后, 去执行:
CentOS:systemctl restart php-fpm
在 Ubuntu操作系统里面, 大家要输入的代码是systemctl restart php8.2-fpm。当然啦, 实际使用的版本可能会有区别, 所以可能需要根据当前的具体配置来做一个小小的调整。
同时请使用 systemctl status php-fpm 确认服务的状态呈现为 active。倘若在重启之后网站能够恢复正常运作, 那么仍旧需要继续进行后续的相关步骤, 以此来避免此类情况再次发生。
第二步:调整超时参数
出现504错误这一状况, 大多数情况之下是由于脚本执行的时间超出了代理服务器所设定的等待上限, 因此必须要对两个相关的配置位置进行同步的调整。
PHP:/etc/php/8.2/fpm/php.ini 中 max_execution_time=300、max_input_time=300;php-fpm.conf 中 request_terminate_timeout=300
在Nginx的站点配置文件中, 需要增加如下设置, 即把proxy_read_timeout的值设定为300s, 并且也把proxy_connect_timeout的值设定为60s。
修改后执行 nginx -t && nginx -s reload && systemctl restart php-fpm。
第三步:排查插件与主题冲突
在执行操作之前, 需要先通过使用 wp db export backup.sql 这个命令来对数据库进行备份。接着, 再继续进行以下步骤:
1. 在后台把全部插件停用掉, 然后把主题切换为Twenty Twenty-Four。
2. 进行前台测试的访问操作, 倘若错误的情况消失了, 就需要一个接一个地把插件的功能启用起来, 以此来找到产生冲突的那个具体的项目。
3. 如果后台出现无法登录的情况, 用户可以通过使用FTP工具, 将wp-content/plugins/这个文件夹的命名修改为plugins.bak/, 这样做就可以一次性把所有的插件都禁用掉。
容易引发冲突的常见原因包括一些大型的安全插件, 还有一些页面构建工具比如Elementor或者Divi, 或者是使用历史比较长的缓存插件。
第四步:检查服务器资源
执行以下命令快速定位瓶颈:
top, 也就是看CPU或者内存是不是一直保持在100%的状态。
在使用df -h检查磁盘使用率时, 如果发现磁盘空间的使用比例超过了百分之九十五, 就会造成数据库写入失败的问题, 进而直接导致出现五百零二这种错误情况。
使用free -m这个指令, 可以对是否还有足够的可用内存来进行确认。
处理的方式是, 清理掉/var/log/目录里面已经过期了的那些日志和没有用的文件, 然后找到php.ini这个文件, 把里面的memory_limit参数的值改成256M或者是512M, 如果资源长期都得不到满足的话, 那就联系主机提供商去把容量扩上去。
第五步:查看错误日志锁定根因
PHP:tail -200 /var/log/php-fpm/error.log
Nginx:tail -200 /var/log/nginx/error.log
MySQL:tail -200 /var/log/mysql/error.log
重点关注 Fatal error、Connection refused、memory limit exceeded 等关键词,日志中通常直接指明出错的插件路径或函数名。
日常预防要点
在 wp-config.php 这个文件里, 设置那个 define('WP_DEBUG', false); , 这样做的目的, 是让前台不会暴露出错误来。
每周对文件还有数据库进行备份, 并且至少保留3份备份, 在一些重要的操作执行之前要手动地进行备份。
在管理插件的时候, 大家要遵循一个规则, 就是同一种类型的功能只能选择安装一个, 同时需要把那些很长时间都没有更新过的插件给卸载掉, 并且及时进行整体的更新操作。
需要对系统进行配置, 让Cron替代WP-Cron的方式来实现定时任务的处理。这样做的目的是为了有效地避免定时任务堆积。当出现堆*况的时候很有可能会导致请求超时的问题。
如果前面的那些办法都没有效果的话, 那么请确认一下你的PHP版本是满足WordPress的要求的, 也就是说版本号应该是7.4及以上的版本, 接着检查一查看看SSL证书是不是已经过期了, 然后再联系主机提供商, 去确认一下会不会是因为存在带宽限制的问题, 或者说是IP被封禁了的情况。
常见问题
《WordPress网站报502/504错误?5步排查修复方案》主要讲什么?
当WordPress网站出现502 Bad Gateway(错误类型: Bad Gateway, 即“错误的网关”)或者504 Gateway Timeout(错误类型: Gateway Timeou…
文章提到了哪些重点?
以下是根据排查优先顺序列出的5个步骤的解决方法, 你可以直接按照这个顺序来进行操作;502报错出现得最多的情况, 就是PHP-FPM这个进程突然异常退出了
文章给出了哪些建议?
2. 进行前台测试的访问操作, 倘若错误的情况消失了, 就需要一个接一个地把插件的功能启用起来, 以此来找到产生冲突的那个具体的项目。