微信关注,获取更多

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

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

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

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

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

bandwagonhostnet_wprocket_preload-1024x1015-1

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

二、方法

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

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

bandwagonhostnet_wprocket_preload2-1024x718-1

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

三、的官方解释

经过进一步查阅 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 站点运行状况工具。在那里您可能会看到相关错误,例如您的站点无法完成环回请求

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

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

以上就是 WP Rocket 给出的一些可能的原因。

四、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://www.vps114.com/bwg

温馨提醒 如果您有选择困难症,直接选中间的 CN2 GIA-E方案,季付 $49.99,多达 12 个机房任意切换
方案 内存 CPU 硬盘 流量/月 带宽 机房 价格 购买
CN2
(最便宜)
1GB 1核 20GB 1TB 1Gbps DC3 CN2
DC8 ZNET
$49.99/年 购买
CN2 2GB 1核 40GB 2TB 1Gbps $52.99/半年
$99.99/年
购买
CN2 GIA-E
(最推荐)
1GB 2核 20GB 1TB 2.5Gbps DC6 CN2 GIA-E
DC9 CN2 GIA
日本软银 JPOS_1
荷兰 EUNL_9
$49.99/季度
$169.99/年
购买
CN2 GIA-E 2GB 3核 40GB 2TB 2.5Gbps $89.99/季度
$299.99/年
购买
HK 2GB 2核 40GB 0.5TB 1Gbps 中国香港 CN2 GIA $89.99/月
$899.99/年
购买
HK 4GB 4核 80GB 1TB 1Gbps $155.99/月
$1559.99/年
购买
TOKYO 2GB 2核 40GB 0.5TB 1.2Gbps 日本东京 CN2 GIA $89.99/月
$899.99/年
购买
TOKYO 4GB 4核 80GB 1TB 1.2Gbps $155.99/月
$1559.99/年
购买
搬瓦工优惠码:BWH3HYATVBJW 搬瓦工购买教程:《2022 年最新搬瓦工购买教程和支付宝支付教程

选择建议:

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

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