WP Rocket 预缓存功能造成 VPS 大量资源占用导致网站慢的解决方法

WP Rocket 是一个非常好用的缓存插件,其中有一个预缓存功能,可以提前将你的一些网页缓存下来,然后用户访问的时候就相当于直接就是静态页面了。搬瓦工中文网使用 WP Rocket 已经有一段时间了,但是最近发现网站经常会很卡,有时候甚至比不缓存还卡。查了下响应日志,发现是 WP Rocket Preload 占用了大量资源,直接把 VPS 的 CPU 跑满了。所以本文记录一下遇到类似情况的解决方法。

相关文章:《WordPress 缓存插件推荐 WP Rocket – 超好用 WP 网站加速必备插件

WP Rocket 缓存插件官网:WP Rocket 

一、WP Rocket 导致网站慢排查方法

其实也不一定就是 WP Rocket 导致网站慢,但是如果网站响应特别慢,我们可以登录 VPS,看看到底是什么资源占用比较高,如果看到是 NGINX 或者是 PHP 之类的,那么再登录宝塔面板,看看网站的响应日志。

参考:《搬瓦工宝塔建站教程:查看宝塔面板系统性能监控和网站访问日志方法》。

下面就是网站的访问日志,发现全都是来自本地 IP 的请求,然后请求全都是 WP Rocket/Preload。所以一看就是因为 WP Rocket 预缓存导致的问题。

找到问题之后就是解决问题。

二、WP Rocket 关闭预缓存方法

其实正确的解决方法应该是看看能不能设置预缓存的频率,或者是每天设置个时间定时预缓存,比如设置到凌晨,深夜。但是找来找去发现 WP Rocket 并没有这个设置选项,只有开启或者不开启预缓存。

无奈之下最后只能先关闭 WP Rocket 预缓存了,关闭之后观察了一阵子,发现确实没有再出现资源占用特别高的情况。

那么有没有更好的解决方法?

三、WP Rocket 预缓存慢的官方解释

经过进一步查阅 WP Rocket 的官方文档,我们找到了一个关于 WP Rocket 的《Preload is slow, or some pages are not preloaded at all》这个文档。下面翻译摘录相关说明如下。

预加载缓慢或未完成

WP Rocket 的预加载需要很长时间或未完成的可能原因有 2 个:

PHP 执行时间

用于预加载的 PHP 后台进程只能在服务器上 PHP 执行时间允许的情况下运行。PHP 执行时间的常见默认限制是 30 秒;那是允许像 preload 这样的 PHP 脚本运行的时间,在服务器决定它运行时间过长并停止它之前。

一旦 WP Rocket 的预加载过程达到 PHP 执行时间限制,它就会停止。之后它将启动下一批 URL。如果由于某种原因进程没有自动重新启动,我们有一个 cron 会在 5 分钟后触发以重新启动进程。

因此,当有很多 URL 需要预加载时,WP Rocket 会设法在 30 秒内预加载 n 个 URL,然后暂停最多 5 分钟,然后在另外 30 秒内预加载另外 n 个 URL,然后暂停,等等,直到所有 URL 都被预加载。

WP Cron

预加载依赖于 WP Cron,而后者又依赖于 WordPress 中的 PHP 页面加载。这些页面加载可以是后端或前端,但由于 PHP 不在缓存页面上执行,因此对于使用 WP Rocket 的站点,我们主要讨论的是后端活动。

简而言之,如果 WP Admin 上一段时间没有活动,WP Rocket 的预加载将停止触发。

为了使预加载更可靠,建议将 wp-cron 替换为来自服务器的真实 cron 作业。

参考:《WordPress 禁用 WP Cron 并添加宝塔面板定时计划任务》。

自我请求被阻止

通过转到工具→站点运行状况检查您站点的 WordPress 站点运行状况工具。在那里您可能会看到相关错误,例如您的站点无法完成环回请求

一些主机不允许托管在其服务器上的站点使用 cURL 连接到自己。这可以防止几个 WP Rocket 功能(例如预加载和关键路径 CSS 生成)失败。

请联系您的主机支持并请求删除该限制(如果它已在服务器中设置)。

以上就是 WP Rocket 给出的一些可能的原因。具体的解决方法在《Preload is slow, or some pages are not preloaded at all》这篇文章里也有提到。

四、WP Rocket 增加预缓存超时时间

其实感觉比较行之有效的可能是增加预缓存的超时时间。

服务器响应时间慢

常见错误:cURL error 28

启动预加载时,我们的爬虫会尝试访问您的主页或站点地图。它等待 10 秒,如果没有响应,它将停止并且不会预加载任何内容。

要查看您的站点是否会出现这种情况,您可以测试服务器的响应时间。这是通过 cURL 命令完成的(使用 Mac 的终端或 Windows 的 cmd.exe 等应用程序)。输入以下命令,不要忘记将 http://example.com/sitemap.xml 替换为您自己的站点地图 URL、主页 URL 或您看到的错误消息中引用的任何 URL。

curl -o /dev/null -s -w %{time_total}\\n  http://example.com/sitemap.xml

如果 URL 的响应时间超过 10 秒,请先尝试为您的站点增加 PHP 内存

如果这没有帮助,您可以使用下面的帮助插件增加预加载请求的超时时间。

下载 (.zip):WP Rocket | Custom cURL Timeout For Preload Request

至于具体原因可能还是每个人不同,多看看官方文档可能会有帮助。搬瓦工中文网就暂时解决到这一步就感觉差不多了。

五、搬瓦工新手教程和优惠套餐

搬瓦工推荐方案

搬瓦工实时库存:https://stock.bwg.net

温馨提醒 如果您有选择困难症,直接选中间的 CN2 GIA-E方案,季付 $49.99,多达 12 个机房任意切换
方案内存CPU硬盘流量/月带宽机房价格购买
KVM
(最便宜)
1GB2核20GB1TB1GbpsDC3 CN2
DC8 ZNET
(购买后在后台迁移)
$49.99/年购买
KVM2GB3核40GB2TB1Gbps$52.99/半年
$99.99/年
购买
CN2 GIA-E
(最推荐)
1GB2核20GB1TB2.5GbpsDC6 CN2 GIA-E
DC9 CN2 GIA
日本软银 JPOS_1
荷兰 EUNL_9
$49.99/季度
$169.99/年
购买
CN2 GIA-E2GB3核40GB2TB2.5Gbps$89.99/季度
$299.99/年
购买
HK2GB2核40GB0.5TB1Gbps中国香港 CN2 GIA
日本东京 CN2 GIA
$89.99/月
$899.99/年
购买
HK4GB4核80GB1TB1Gbps$155.99/月
$1559.99/年
购买
OSAKA2GB2核40GB0.5TB1.5Gbps日本大阪 CN2 GIA$49.99/月
$499.99/年
购买
OSAKA4GB4核80GB1TB1.5Gbps$86.99/月
$869.99/年
购买
搬瓦工优惠码:BWHCCNCXVV搬瓦工购买教程:《2024 年最新搬瓦工购买教程和支付宝支付教程

选择建议:

  • 入门:洛杉矶 CN2 套餐,目前最便宜,可选 CN2 GT 机房,入门之选。
  • 推荐:洛杉矶 CN2 GIA-E 套餐,速度超快,可选机房多(DC6、DC9、日本软银、荷兰联通等),性价比最高。
  • 高端:香港 CN2 GIA 套餐,价格较高,但是无可挑剔。东京 CN2 GIA 套餐也是非常不错的高端选择。

搬瓦工新手教程

  1. 搬瓦工新手入门:《搬瓦工新手入门完全指南:方案推荐、机房选择、优惠码和购买教程(推荐阅读)
  2. 搬瓦工购买教程:《2022 年最新搬瓦工购买教程和支付宝支付教程
  3. 搬瓦工优惠码:BWHCCNCXVV
  4. 搬瓦工补货通知:《欢迎订阅搬瓦工补货通知(补货提醒)/ 加入搬瓦工交流群
  5. 搬瓦工方案推荐:《搬瓦工高性价比 VPS 推荐:目前哪款方案最值得买?

搬瓦工补货通知

搬瓦工目前一共有四款限量版套餐,具体参考这里整理的搬瓦工所有限量版套餐汇总。下面是搬瓦工限量版套餐补货、上新、最新优惠通知。

如果来晚了已经缺货,可以关注搬瓦工补货通知:

未经允许不得转载:Bandwagonhost中文网 » WP Rocket 预缓存功能造成 VPS 大量资源占用导致网站慢的解决方法