如何修复WordPress中的HTTP服务不可用503错误

错误类型:
HTTP错误
错误名称:
HTTP服务不可用
英文名称:
HTTP Error 503
错误描述:
遇到503错误时,表示相关服务器不可用。 这可能是因为服务器繁忙了,或者它处于维护状态。 与其他类似的错误代码不同,503表示您的网站已联机并正在运行,但目前无法访问。
错误变体:
503 Service Unavailable
503 Service Temporarily Unavailable
HTTP Server Error 503
Error 503 Service Unavailable
更多信息

诊断服务器错误有点像照顾一只愤怒的猫–你永远无法确定问题的起因或发生过程。有一长串的潜在原因需要解决。即使你解决了问题,也不能完全确定是什么起了作用。

HTTP 错误“503 Service Unavailable”通常意味着服务器资源耗尽。但为什么会出现这种情况并不总是很清楚。

在大多数情况下,503 状态代码的出现是因为 WordPress 占用了太多内存,或者是因为您的托管服务出现了意料之外的问题。要解决这个问题,您可能需要减少网站的内存使用量,或者升级主机账户的资源。

503错误

不知道从何下手?不用担心!在本快速指南中,我们将向您介绍如何解决过载问题,让您的网站恢复到最佳状态。

什么原因导致503 Service Unavailable错误?

503 错误代码实际上并不是 WordPress 特有的。事实上,它可能在 WordPress 启动之前就出现了。那么,到底是怎么回事呢?

WordPress网站服务器不可用错误

就像电脑上的应用程序一样,网站的运行需要一定的资源。例如,它需要内存、处理能力和硬盘空间。无论您使用哪种类型的托管服务提供商,情况都是如此。

如果您的服务器在这些资源上开始运行不足,就可能难以处理访问者的请求。最终结果是什么?您的网站将暂时不可用。

有鉴于此,以下是 503 错误信息最常见的原因:

  • 您的网站正在消耗大量资源:例如,这可能是因为插件或主题操作不当,需要更多内存。
  • 动态流量异常大:如果有很多人同时访问你的网站,你的资源消耗速度就会比正常情况下快很多。好消息是,您可以避免缓慢的加载时间,并提前为更高的流量水平做好准备。
  • 你的网站服务器可能遇到了困难:如果你的虚拟主机服务最近升级了软件,你的网站可能没有得到正确的配置或优化。您的虚拟主机可能需要重新启动一个或多个服务器进程,以恢复正常性能水平。

无论根本原因是什么,HTTP 503 错误都不能忽视。除非是主机层面的问题,否则该错误不会自行解决,而且很可能会给您的网站和访客带来重大问题。

503错误变体

503错误可以通过很多方式显示出来。 但是,几乎每个变体都伴随着503代码,因此很容易识别。

以下是您可能遇到的一些变体,具体取决于您的服务器配置和浏览器:

  • 503 Service Unavailable
  • 503 Service Temporarily Unavailable
  • HTTP Server Error 503
  • HTTP Error 503
  • Error 503 Service Unavailable

无论您遇到的报错码是什么样子,都意味着您需要在它对用户产生负面影响之前快速处理。

503错误为何会给网站带来问题

像 HTTP 503 响应这样的服务器端问题不仅令人讨厌,还会对您的业务产生重大影响。

以下是一些需要注意的情况:

  • 您的网站可能会间歇性不可用。
  • 您的访问者可能根本无法查看您的网站。
  • 网站上的特定页面可能不可用,通常是资源最密集的页面。
  • 搜索引擎无法读取您的网站并对其进行排名。
  • 网站的实用程序(如安全扫描)无法正常运行或无法在预定时间运行。

一般来说,503 错误会使您和您的访问者都很难使用您的网站。值得庆幸的是,它是可以修复的!

如何修复WordPress的503错误

由于您经常无法确定在任何给定情况下导致503错误的原因,因此您需要逐步进行故障排除。 以下六个步骤分别涵盖了一个解决方案,旨在解决不同的错误起因。

完成每个步骤后,请花点时间返回到您的网站,看看503错误是否消失。 如果是,您已成功解决了问题。 如果没有,请继续执行该过程的下一步。

1.暂时停用WordPress插件

WordPress中503错误的最常见原因之一是插件兼容性问题。 要确定是否发生了这种情况,您需要禁用所有网站的插件。

由于503错误导致您无法访问WordPress管理后台,因此您需要使用FTP客户端执行此步骤。 如果您没有安装对应的工具,我们建议使用FileZilla

FTP客户端准备就绪后,通过它连接到您的网站并导航到您的WordPress根文件夹。 如果您找不到它,通常称为public_html,html,public,www或您网站的名称。一般路径为/home/wwwroot/www.yourdomain.com/wp-content,如下图所示:

如何修复WordPress中的HTTP服务不可用503错误插图2

WordPress插件FTP目录

打开该文件夹,然后导航到wp-content目录。 在里面,您将看到一个名为plugins的文件夹,其中包含您站点上安装的每个插件(活动和非活动)的各个子目录。

您现在要做的是右键单击插件文件夹,然后将其重命名为其他内容。 我们建议使用plugins.old或plugins.deactivated,以便日后轻松识别。

wordpress-plugins-folder-renamed-sftp

WordPress plugins 文件夹重命名

WordPress现在无法找到任何插件。当发生这种情况时,它会自动禁用这些插件。

现在,尝试访问您的WordPress仪表盘。如果503错误消失了,那么你可以假设其中一个插件是罪魁祸首。你所要做的就是将这个有问题的插件揪出来。

返回到wp-content目录,并正确重命名原始插件文件夹。然后,您需要逐个禁用每个插件,直到找到罪魁祸首。

为此,请打开wp-content/plugins目录。在里面,你会找到每个插件的一个文件夹。您要遵循的流程与前面的步骤大致相同:

  • 从第一个文件夹开始,并将其重命名为您喜欢的任何内容。
  • 检查您的网站,看看错误是否消失。
  • 如果不是,请将上一步中的插件文件夹恢复为原始名称。
  • 转到列表中的下一个插件,重复上述步骤。
  • 如果你有很多插件,这个过程可能需要一段时间,但是依次检查每个插件是至关重要的。如果您在任何时候识别出导致错误的插件,您可以将其卸载或用其他工具替换它。

如果在完成这些步骤没有找到解决方案的情况下,您可以继续执行下一步的故障排除。

2. 停用WordPress主题

既然你已经排除了插件为503错误出现的原因,那么现在是时候对你的WordPress当前正在使用主题做同样的事了。 实际上,您的主题也可能会产生兼容性问题。

不幸的是,该过程与上述不同。 如果只是重命名主题文件夹,WordPress将不会恢复为默认主题,最终会出现“主题目录”、“主题名称不存在”之类的错误。或者如果您尝试重命名整个主题目录文件夹, 最终出现“错误:主题目录为空或不存在。 请检查你的安装。”

the-theme-directory-does-not-exist

主题目录不存在错误提示

因此,您需要通过登录phpMyAdmin来访问您的WordPress数据库。

单击“wp_options”表,然后单击“搜索”选项卡。 您需要在“option_name”下搜索template

如何修复WordPress中的HTTP服务不可用503错误插图5

数据库wp_options表

在“option_value”列下,您将看到主题的当前名称。 将其更改为默认主题之一,例如“twentynineteen”。

wp-options-template-name

wp_options 主题名称

再次检查您的网站,看看是否修复了错误。 如果已修复,即意味着是您的WordPress主题的问题,您可能想尝试重新安装它或恢复到最近的备份。

3. 暂时禁用CDN(内容分发网络)

如何修复WordPress中的HTTP服务不可用503错误插图7

不同的CDN服务商,这一块的流程可能会有所不同,具体取决于您使用的CDN。 众所周知,Cloudflare会导致503错误。 如果您找不到暂停选项的选项,请查看您的服务知识库,其中通常包含详细说明。

如果您不使用CDN或发现暂停您的服务对您的问题没有帮助,那么我们需要继续尝试其他方法。 请记住在继续之前重新启用您的CDN。

4. 限制WordPress的 ‘Heartbeat’ API

WordPress Heartbeat是一个内置于WordPress中的API,该平台用于自动保存内容,显示插件通知,提醒你其他人正在处理您尝试访问的文章等等。

就像常规心跳一样,API在后台以高频率工作,因此它不会遗漏任何内容。 如您所想,此API会占用服务器资源。 通常,这不是问题,但在某些情况下,如果您的服务器无法处理负载,可能会导致503错误。

确定Heartbeat API是否是问题的核心的最快方法是暂时禁用它。 为此,请再次通过FTP连接到您的WordPress网站,然后打开当前的主题文件夹并在以下位置查找functions.php文件:

wordpress-theme-functions-file

WordPress主题的functions.php文件

右键单击该文件,然后选择“查看/编辑”选项,该选项将使用本地文本编辑器将其打开。 打开后,您需要添加以下代码段:

add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat() {
wp_deregister_script('heartbeat');
}

这三行代码告诉WordPress禁用Heartbeat API。 将更改保存到functions.php文件,关闭它后,再次尝试访问您的网站。

如果503错误消失,那这个API是问题所在。 但是,完全禁用它会使WordPress许多有用的功能不可用。 相反,我们建议您降低WordPress的Heartbeat频率,以免造成问题。

最简单的方法是安装Heartbeat Control插件。启用插件并导航到“设置”>“Heartbeat Control ”。 查找“Modify Heartbeat”选项,并将频率(Frequency)降至尽可能的数字:

Heartbeat-control-frequency

Heartbeat Control插件频率设置

将更改保存到您的设置并返回到functions.php文件,要使上述更改生效,您需要删除之前functions.php文件添加的代码并将更改保存到文件中。

在此阶段,如果Heartbeat API出现问题,那么你应该已经解决了503错误。 如果不是,那么是继续尝试不同的方法。

5. 增加服务器资源

如果到目前为止所有修复依然未能解决503错误,那么问题很可能是由于缺少服务器资源。 也就是说,您需要升级您的服务器,看看是否能解决问题。 如果你使用廉价的WordPress主机,它们往往会限制资源导致503报错。

下面我们就来分析一下如何弄清楚这个问题:

  1. 分析当前的资源使用情况:大多数托管服务提供商都提供监控资源使用情况的工具。查看 CPU 使用率、内存消耗量和带宽等指标。如果这些指标持续达到极限,则表明您需要升级。如果可能,在流量大的时候运行这些检查。
  2. 评估你的网站: 一个拥有静态内容的简单博客比一个拥有动态内容、数据库和大量插件的复杂电子商务网站消耗的资源要少。
  3. 考虑一下您的具体资源需求:不要只看 CPU 和内存。还要考虑存储空间(尤其是在有大量媒体的情况下)、数据库性能和带宽。如果您的网站严重依赖数据库查询,请确保任何新的托管计划都能提供优化的数据库性能。

但是,升级服务器是一个重大决定。 聪明的举措是首先联系您的服务器提供商,并与他们讨论503错误,以及您迄今为止尝试解决它的步骤。 支持团队应该能够帮助您解决问题,并建议您是否需要升级服务器。

6. 查看日志及开启WP_DEBUG

您还应该利用错误日志。 如果您的网站服务器使用的LNMP搭建,通过网站服务器/home/wwwlogs路径,可以快速找到网站访问错误日志(一般以nginx_error.log或者error.log命名)。 这可以帮助您快速缩小问题范围,特别是如果它是由您网站上的插件产生的。

check-errors-logs-for-500-internal-server-errors-1-1

检查错误日志记录中的503错误

如果您的主机没有日志记录工具,您还可以将以下代码添加到wp-config.php文件以启用日志记录:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

Debug日志通常位于/wp-content目录中。 在其中,查找名为debug.log的文件并将其打开。

也有一些服务器提供商,可能会有一个名为“logs”的专用文件夹。

wordpress-error-logs-folder-sftp

WordPress错误日志文件夹 (SFTP)

查看debug日志可能会让很多站长望而却步,但它并不像您想象的那样难以阅读。 简而言之,日志包含按时间顺序在您的网站上弹出的每个错误。 它显示了导致每个错误的文件,以及涉及哪些特定代码行。

注意:您不会在日志中找到对503错误的直接引用。 即便如此,如果所有其他方法都失败了,它可以通过向您显示导致问题的文件来指向正确的方向。 这样,你就会知道接下来要把重点放在哪里。 正如我们在上一步中提到的,如果您需要进一步的帮助来解决此错误,现在是与您的服务器提供商联系,让他们来协助解决这个问题。又或者找个懂服务器运维的朋友帮忙。

您还可以检查Apache和Nginx中的日志文件,这些文件通常位于此处:

  • Apache: /var/log/apache2/error.log
  • Nginx: /var/log/nginx/error.log

如果由于致命的PHP错误而导致503错误,您还可以尝试启用PHP错误报告。 只需将以下代码添加到出错误的文件中即可。 通常,您可以在Google Chrome DevTools的控制台标签中缩小文件范围。

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

您可能还需要使用以下内容修改php.ini文件:

display_errors = on

7. 重新安装WordPress

如果关闭插件和重置主题都不起作用,您可能需要重新安装 WordPress。

哦,天哪,听起来真麻烦。

好消息是,只有在 WordPress 核心文件被修改(不应该被修改)或损坏的情况下,您才需要采取这一步骤。这并不像你想象的那么可怕。

WordPress 会将您上传的文件保存在主机服务器上,其余数据则安全地保存在网站数据库中。这意味着您可以重新安装 WordPress 核心文件,而其他文件应该保持不变。

即便如此,您还是要备份文件以防万一

每个好的托管服务都提供备份工具,您可以使用这些工具创建托管账户的当前备份或快照,以便日后恢复。

重新安装WordPress最简单的方法是通过仪表盘。转到控制面板 > 更新 。然后点击重新安装 6.6.2 版(或正在运行的版本):

重新安装WordPress WordPress 会自行重新安装。完成后,刷新您的网站,看看是否有所改变。

如果您无法访问 WordPress 控制面板,也可以通过 SFTP 手动重新安装 WordPress。首先,您需要直接从 WordPress.org 下载 WordPress

然后,解压 .zip 文件并打开 FileZilla 或其他 SFTP 解决方案。确保客户端已连接到 WordPress 网站。然后,将新下载的 WordPress 文件上传到 WordPress 目录。

新的 WordPress 文件应完全替换旧 WordPress 目录中的所有内容。一般来说,每次进行重大更改后,最好都检查一下网站的性能。

小结

一般情况下,只有当您将网站置于维护模式时,才会显示503错误。 但是,如果它不是这个原因,那么你将不得不卷起袖子进行故障排除。

要了解503错误的根本原因,您需要按照以下步骤进行修复:

  • 暂时停用WordPress插件。
  • 停用正在使用的WordPress主题。
  • 禁用网站的CDN服务。
  • 限制WordPress的Heartbeat API。
  • 增加服务器资源。
  • 查看日志并启用WP_DEBUG。
  • 重新安装WP核心

你有没有遇到过WordPress中的503错误? 在下面的留言评论与我们分享您的经验!

评论留言