WordPress优化,宝塔(BT)面板,CPU占用100%解决办法一例

本文章重新写,为啥?


看到多个人搜索,遭遇到宝塔面板安装WordPress遇到 CPU占用资源经常100%的情况

刚好我也遇到了一例,所以写出来,希望能帮到有需要的人

我的服务器配置

CPU: 8核

内存: 8G

数据库:MySQL 5.6.47

服务器:Nginx 1.16.1

CMS: WordPress5.4

本站使用的是WordPress。WordPress的速度非常非常非常糟糕,在只有几百篇文章的情况下,速度已经非常不理想。WordPress 太耗CPU,本站的思路是通过缓存降低使用CPU的频率,达到加速访问。

本站通过优化后,原本每次加载在16s左右优化到了2s左右。提高了八倍的速度。(本次教程不拿我的站点演示)

优化过程

为了提高速度,尝试了多种方法(原教程提供了多种思路,但本站仅提供我使用的几种方法):

memcached (缓存)

redis(缓存)

预缓存(wp-rocket插件)

现阶段最适合的优化

预缓存,使用wp-rocket插件,将html页面静态化,

原理也非常简单

那就是把网页文件预先生成html,直接保存在磁盘上

但是到了wordpress,提供了更多的优化方式:

比如访问方法:

  • 可以直接通过服务器的Rewrite访问,不经php,这样是最快的
  • 可以通过php,不经数据库
  • 也可以通过php,再经数据库
  • 也可以直接生成html静态的路径

缓存文件:

  • 可以是html
  • 可以是压缩的html(html.gz)
  • 可以是php格式的

存储介质:

  • 可以存在磁盘上
  • 也可以直接存在内存中

尝试的插件

试用过的插件有下面这些:

wp-rocket

wp-super-cache

WPJAM Basic

解决办法

emm因为一些事情《关于本站数据文件又丢了!!!20220712》所以这次我将以我自己的网站服务器来做优化教程,顺便更新和优化一些教程内容,

我去17ce测试了一下网站速度,嗯不错,意料中的就是一测就爆。

看似任务很艰巨,因为这配置不知道优化后会成什么样,死马当活马医吧,开干。

安装memcached和redis

我们先去看一下网站站点使用的是什么版本的php

然后去软件商店里,点击相应php版本的设置,

设置→安装扩展→安装memcached和redis。

等待安装好。

然后再去软件商店里找到memcached和redis,分别再安装一次。

我发现我这里已经安装好了emmm(鬼知道什么时候装的)

用Bt(宝塔面板)的远程下载的功能来完成下载所需要的redis文件

注意有两种方法哦

方法一:ssh工具登录vps来下载一些必要的东西

SSH工具登陆VPS后,定位到你的网站根目录,比如网站目录:/www/wwwroot/r-blog.cn;运行下方命令定位到所需网站的根目录

cd /www/wwwroot/r-blog.cn #请修改成你自己网站的实际目录)

然后运行下方命令下载所需的文件

wget http://uploads.staticjw.com/ji/jim/predis.php

再运行下方命令修改权限

chown www.www ./predis.php

再运行下方命令下载前端缓存的PHP脚本

wget https://gist.githubusercontent.com/JimWestergren/3053250/raw/d9e279e31cbee4a1520f59108a4418ae396b2dde/index-with-redis.php

修改权限

chown www.www ./index-with-redis.php

再用下方命令替换原网站目录的文件index.php,回车确定(这里说下,你可以备份下你的原来的index.php文件 ,如果你要还原可以直接删除掉这个然后用原来的还原。)

mv index-with-redis.php index.php

至此大功告成,Redis缓存成功开启!做完这步,就开启了Redis来加速WordPress,这时远在美国机房的网站的WordPress速度照样飞快。

如果你不想登录ssh来运行这些命令,我们通过面板也是可以的。

方法二:利用宝塔板面下载

很多小白,压根不知道什么ssh登录工具,还要你去一些乱七八糟的网站下载ssh登录工具,万一带了病毒怎么办,去年连大名鼎鼎的Xshell 的官方都承认某些Xshell 的版本是有木马的。所以如果不需要ssh登录,尽量不要搞这玩意。

1、我们点击文件里面的远程下载的功能按钮

2、输入链接地址

我么在url地址这一栏输入链接地址

http://uploads.staticjw.com/ji/jim/predis.php

 

同样步骤下载

https://gist.githubusercontent.com/JimWestergren/3053250/raw/d9e279e31cbee4a1520f59108a4418ae396b2dde/index-with-redis.php

然后,我们点击确定可以了,我们可以刷新下这个目录,就可以看到下载的东西了。下载好,可以安装前面说的修改下权限

3、修改权限

Bt(宝塔面板)如何修改权限和所有者,首页我们要选中文件,然后在后面可以看到权限这个功能,然后点击下就可以了我们简单看下截图!

第四:调试修改index-with-redis.php的一些参数

根据自己需求修改index-with-redis.php,修改如下:

cf = 0;                         // 如果使用cloudflare,则设置为1
$debug = 1;                     // 如果希望查看执行时间和缓存操作,请设置为1
$display_powered_by_redis = 0;  // 如果要显示带有执行时间的powered by redis消息,请设置为1

其实改不改都可以,看具体情况。

替换index.php

(将原版的index.php替换成index-with-redis.php,也就是说把index.php备份并删除,将index-with-redis.php改名为index.php

ssh指令

mv index.php index.php_bk #替换到原来的index.php,也可以改nginx伪静态规则
mv index-with-redis.php index.php

宝塔直接操作就不演示了

很简单

1、缓存问题
index-with-redis.php中有注释

Appending a ?c=y to a url deletes the entire cache of the domain, only works when you are logged in
Appending a ?r=y to a url deletes the cache of that url
Submitting a comment deletes the cache of that page
Refreshing (f5) a page deletes the cache of that page

意思是


登录后台网站url后面加上?c=y即可刷新整个网站

可以在网站页面后面加上?r=y即可手工刷新

提交评论会自动刷新页面

刷新(f5)页面也可以刷新页面


2、测试结果
可查看本博客网页源码,我的数据是

  1. no cached: 0.965
  2. this is a cached: 0.00105

然后再去测试一下访问压力

嗯 不出意外,还是爆了,

但是BUT,测速结果由刚刚的红变成了黄

这还是证明刚刚的操作还是有用的,那么继续进行下面的优化。

第二步是安装memcached,考虑到文章查阅的体验,所以初步安装memcached的教程已经放在前面,当然你看到这里的时候memcached的软件已经安装好了。

安装插件

memcached插件有两个地方可以下载,我们可以访问github项目页面下载插件包:

https://github.com/tollmanz/wordpress-pecl-memcached-object-cache

下载并解压得到的 object-cache.php,上传到 wp-content 目录即可开启memcached缓存。

(以上的操作我没有成功,但保留步骤,感兴趣的勇士可以试一试。)

或者我们去wodpress后台的插件库里下载MemcacheD Is Your Friend,只要后台搜索下既可默认下载安装就可以了。

PHP Memcached 扩展https://wordpress.org/plugins/memcached-is-your-friend/

值得说明的是,这里还有一个大坑等着你来踩:

WordPress官网上还有的object-cache.php虽然也号称Memcached 插件,然而它只支持Memcache,不支持新版的,所以不能使用。如果错误地将object-cache.php和Memcached混用的话,则会出现WordPress打不开,前台后台页面一片空白的现象。

安装batcache插件

batcache可以将整个页面缓存到内存中,下次直接从内存中取出html,完全不需要计算,所以速度非常快。下载解压后其实只有advanced-cache.php是有用的,而batcache.php是一个提供情况缓存的GUI入口,并无大用。

从官方下载插件包:https://wordpress.org/plugins/batcache/

然后解压得到 advanced-cache.php 上传到wp-content即可。

其中advanced-cache.php有一些自定义的选项可供配置:我们打开源代码编辑调成成下面的模式。

var $max_age =  3600; // 过期batcache项的时间超过此秒数(零表示禁用batcache)
var $remote  =    0; // 零禁用向远程数据中心发送缓冲区(从不发送req/sec)
var $times   =    2; // 只有访问此页面多次后才对其进行蝙蝠缓存…(两次或多次)
var $seconds =  0; // …在这几秒钟内(0表示忽略此项并立即使用batcache)

max_age代表缓存过期时间(以秒为单位),times表示访问多少次才创建缓存(2是最小值),seconds表示在多少秒之后才创建缓存(0表示立即)。

之后将advanced-cache.php上传到wp-content目录即可。

编辑博客根目录的wp-config.php 文件

上述所说步骤做完之后,编辑博客根目录的wp-config.php 文件,添加下方两段代码进去并保存:

define('ENABLE_CACHE', true);
define('WP_CACHE', true);

如下图所示:

解析define('ENABLE_CACHE', true);这段是激活Memcached; define('WP_CACHE', true);是激活Batcache;

然后测试一下访问压力。

嗯,还是有点小波浪,并且绿了一点,效果有点进步。

wp-rocket插件缓存文章html页面,减少cpu使用率

这里推荐wp-rocket插件,当然如果你有其他插件也是可以的,主要是缓存html页面

我这里给出一个破解版的连接,毕竟官方的收费。

当然博主写了怎么辛苦,你也看了这么久,那么我也要狠狠宰你一波~(滑稽)

才一块钱啊,别说我不近人情,赚点奶茶钱啊大哥。

您需要先支付 1元 才能查看此处内容!立即支付

然后把插件安装上去,插件自动开启预缓存模式(缓存html)。

PS:可能有些人会遇到这种情况

直接在后台上面操作就好了。或者自己去找问题原因。

然后我们再次去测压

总结

wordpress本身是个很优秀的cms,但是如果你不给他做缓存,那根本没法用。所以这里推荐选择用bt(宝塔)面板来安装wordpress并且开启缓存加速这样更适合小白用。不用再ssh端敲那些命令。

开启wp-rocket后爆卡原因分析

wp-rocket的预缓存不能进行特别的设置:

  1. 不能设置触发时机
  2. 不能设置触发时间
  3. 不能设置触发间隔时间
  4. 不能设置预加载时,使用的cpu核心数目
  5. 不能设置那些可以预加载,那些不能预加载
  6. ...............

wp-rocket预加载时,会同时使用多个cpu核心,导致整个占用资源100%,在大多数情况下,这是灾难性的,毕竟不是谁的服务器都是10核8核的


转载请保留本博客链接~

版权声明 © 本文内容来自若白博客:R-Blog.cn 文章链接:https://r-blog.cn/202207152222.html 转载请注明出处 原创不易,觉得有用的话,请转发保留版权信息表示支持!
THE END
分享
二维码
打赏
海报
WordPress优化,宝塔(BT)面板,CPU占用100%解决办法一例
本文章重新写,为啥? 看到多个人搜索,遭遇到宝塔面板安装WordPress遇到 CPU占用资源经常100%的情况 刚好我也遇到了一例,所以写出来,希望能帮到有需要的……
<<上一篇
下一篇>>
文章目录
关闭
目 录