启用memcached动态缓存加速wordpress

tengxunyun cera

博客正在使用的是基于nginx的fastcgi纯静态缓存,这是将所有的动态HTML页面都缓存到硬盘文件,nginx针对http请求只处理静态内容,因此对服务器的开销很小,速度快。对于动态内容不多的站点,用这个方法能极大缓解cpu的负担,由nginx来高效地处理并发。

另一种缓存方式是基于memcached缓存动态内容,将数据库的数据缓存在内存中,下次需要的时候直接从内存中取数据,减少MySQL的访问次数,也加速了wordpress对网页的处理。这种方式直接从内存中存取数据,理论上比静态缓存的IO开销更小,但是由于memcached需要占用一定php资源,因此会对CPU带来一些额外的压力。

本文记述了在另一个站点上安装部署memcached的过程,最后测试这种方式的缓存的响应速度和并发处理能力。

 

安装memcached服务

网上有一些文章提供了memcached服务的安装方法,有的手动下载源码编译安装,这里采用军哥lnmp一键包插件安装简单的方法。在lnmp源代码目录下,运行addon.sh脚本安装memcached服务

./addons.sh install memcached

在随后出现的选项里选择2,也就是php-memcached的带d的版本,这个相对不带d的版本更新,性能更好。

编译安装完成以后,检查一下memcached的服务是否已经运行。

systemctl status memcached
memcached.service - LSB: memcached - Memory caching daemon
   Loaded: loaded (/etc/rc.d/init.d/memcached; bad; vendor preset: disabled)
   Active: active (running) since Fri 2017-08-18 14:38:00 CST; 1 weeks 0 days ago

然后检查php的memcached模块是否已经加载

php -m | grep memcached

可以新建一个php文件测一下缓存功能,将下面的代码保存为test.php文件。

<?php
$m = new Memcached();
$m->addServer( '127.0.0.1', 11211 );
$m->set( 'foo', 100 );
echo $m->get( 'foo' ) . "\n";

运行php -f test.php,如果结果是100的话表明memcached正常运行。
都没问题的话,就可以进行下一步安装wordpress插件

安装wordpress的memcached插件

访问github项目下载插件文件object-cache.php

将下载好的文件放入wordpress网站目录的wp-content/下,此时wordpress已自动利用memcached缓存功能。

缓存HTML页面到内存

到前面这一步已经完成了数据库查询的动态缓存,如果想要进一步提高性能,还可以类似与wp supercache或fastcgi缓存一下将网站的页面静态化,只不过存储在memcached分配的内存中,而不是硬盘上的文件。

这里要用到的插件叫做batcache,代码的readme文件里解释了这个名称的由来。bat并不表示真的和蝙蝠有什么联系,而是正好发布前夕wp-supercache已经发布,为了不和其他缓存插件冲突而用了这个名字。

首先下载官方插件项目的代码包batcache,解压缩后得到了advanced-cache.php文件,将其放入wordpress网站目录的wp-content/下。

然后在wordpress站点根目录下,在wp-config.php文件内加入一行

define('WP_CACHE', true);

batcache相关的配置在advanced-cache.php中的batcache类中,查找下面这几行

var $max_age =  3600; // Expire batcache items aged this many seconds (zero to disable batcache)
var $remote  =    0; // Zero disables sending buffers to remote datacenters (req/sec is never sent)
var $times   =    2; // Only batcache a page after it is accessed this many times... (two or more)
var $seconds =  120; // ...in this many seconds (zero to ignore this and use batcache immediately)

在此将缓存有效期设为3600秒,也就是过1小时后缓存将重新生成。在120秒内,连续访问该页面2次将生成缓存。具体数字可以根据实际情况修改。

测试一下,将网站的某个页面刷新几次,在Chrome的开发者工具源码页,注意查看body元素的footer里面,包含了下面一段,表明当前页面是由memached缓存生成的。

<!--
    generated in 0.349 seconds
    28088 bytes batcached for 300 seconds
-->

并发测试

经过几次测试,发现通过这种缓存方案,托管于linode的站点大概最多能承担每秒150个并发请求,再多就超过error rate的阈值了。

  • 平均响应时间170ms
  • 平均每秒并发数量170个
  • error rate为0.8%
  • 服务器的CPU使用率开始最高90%,后来稳定在50%左右

总结

针对博客类型的小站,最好还是使用fastcgi的方案实现全静态化。如果动态类型较多,可以采用memcached缓存方案,但是并发处理能力没有fastcgi的好。

cera aliyun tengxunyun cloudiplc

相关推荐

WordPress博客网站使用Memcached和Redis缓存哪个更好|

今天小白得到了一台4核8G的服务器,马上安装上宝塔。接下来就遇到了一个选择困难综合征。到底给数据库安装那种缓存好。是Memcached缓存,还是Redis缓存?接下来小白将详细分析下这两种的区别。 首先,我们今天研究的大前提是#wordpress#博客,那么注定数据量不会太大。访问量也不是超多那种。 一、#Memcached#和#Redis#区别 1、数据存储方式 Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。 Redis有部份存在硬盘上,这样能保证数据的持久性。 2、数据支持类型 Memcache对数据类型支持相对简单。 Redis有复杂的数据类型。 3、使用底层模型差别 它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。 Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。 4、#value#值大小不同 redis最大可以达到1GB,而memcache只有1MB。 二、Memcached和Redis哪个更适合WordPress 根据上面对比我们发现memcached为内存存储,其占用量最大就512MB内存。而Redis可以无限大占用内存和硬盘空间。memcached更适合存储简单的值。所以小白得出的结论是针对内容不多的WordPress博客建议选择用memcached做MySQL数据库的缓存。 但是这里也有一种例外,有些采集站大佬。因为数据量超多。大部分都超过10万篇文章。那种还是用Redis吧。毕竟有这么多内容的服务器配置应该也不低吧。 以上就是今天要介绍的所有内容,如果有错误欢迎留言指出。

同一服务器多个WordPress站点使用Memcached冲突的解决办法

缙哥哥开启了一个公益站点“琅嬛百科”,方便大家检索中医药相关的内容,由于需要经常搜索,所以开启了 Memcached 内存缓存,以便减少服务器压力,提高访问速度,改善用户体验度。由于跟缙哥哥博客放在同一台服务器上,开启后自动跳转到博客地址…… 缙哥哥就纳闷了,明明数据库不是同一个,数据库前缀也不同,网站文件也不同,怎么就冲突了呢?后来一想就明白了,用的是同个内存啊,既然如此,用 CACHE_KAY 把两个网站区分开就好了嘛! 区分Memcached缓存 进入WordPress站点根目录,编辑根目录下的wp-config.php文件,在 /* 好了!请不要再继续编辑。请保存本文件。使用愉快! */ 该代码注释上方添加以下代码 /* 同服务器多站点Memcached内存缓存分离 – https://www.dujin.org/12476.html */ define(‘WP_CACHE_KEY_SALT’, ‘www.dujin.org’); 这里引号中间 www.dujin.org 只是为了与其他站点区别 Memcached 缓存数据,避免冲突而已,你可以改成自己的网址,也可以不改。记得保存 wp-config.php 文件,然后重启下(个人建议)就OK了!

WordPress 如何启用 Memcached 内存缓存

Memcached 是一种高性能的分布式内存对象缓存系统。在动态应用,Memcached 既能提高访问的速度,同时还减低了数据库的负载。 Danga Interactive 为提升 LiveJournal.com 的速度研发了 Memcached。目前,LiveJournal.com 每天已经在向一百万用户提供多达两千万次的页面访问。而这些,是由一个由 Web 服务器和数据库服务器组成的集群完成的。Memcached 几乎完全放弃了任何数据都从数据库读取的方式,同时,它还缩短了用户查看页面的速度、更好的资源分配方式,以及 Memcache 失效时对数据库的访问速度。 WordPress 和 Memcached 由于 WordPress 默认支持 Object Cache,所以在 WordPress 实现 Memcached 就是使用 Memcached 把 WordPress 的 Object Cache 写到内存中去,下次直接从内存中读取。相比直接从数据库去读取数据,或者从 Object Cache 数据存到文件,然后从硬盘中读取,Memcached 有很大的速度优势。 Memcached 命中率 上图是我爱水煮鱼使用 Memcached 之后的缓存对象的命中率,可以看出命中率是非常高,接近 97%,基本上可以保证所有数据都是从能内存中取,所以使用 Memcached 进行缓存是非常有效的。 WordPress 如何启用 Memcached 缓存 1. 需要你的服务器支持,就是你的 PHP 需要安装上 Memcached …

Yoast SEO|WordPress SEO|优化插件推荐|帮助网站|进行SEO优化

如果你建站使用的是 #WordPress#,比如老唐就是用的 WordPress 建站,并且想要对网站进行#SEO# 优化,那么可以使用一些 WordPress SEO 优化插件。目前老唐也尝试过一些 WordPress SEO 插件,感觉比较好的还是 Yoast SEO 这个插件。设置起来比较方便,而且选项也比较多,但是如果不会设置的话默认设置也已经足够使用,所以推荐我们新手刚接触 SEO 的时候使用。 下载后在后台上传安装,或者直接在后台搜索安装也可以。 Yoast SEO 插件简单设置 其实基本上没有改什么设置,基本都用的#默认#设置。 不过有些设置可以看一下确认一下,比如搜索外观里,标题是否需要强制重写,我们可以重写为自己想要的网站标题,后期更换#主题#也不会影响。 此外,我们主要可能会修改的是搜索外观中的 SEO title 和 Meta description,包括每个文章页和每个独立页面的,一般来说默认也可以,我们有需求可以根据自己的需求进行修改。 如果有需要,我们也可以付费升级高级版,但是一般来说免费版够用了。  

微信扫一扫,分享到朋友圈

启用memcached动态缓存加速wordpress