- A+
Memcached 是一个高性能分布式的内存对象缓存系统, 通常被用于降低数据库加载压力以提高动态 web 应用的响应速度。
官网:http://www.memcached.org
实测环境:搬瓦工 CentOS 7 X64 + LNMP(php 7.2)+ WordPress 4.9
LNMP 一键包自带 Memcached 安装脚本,折腾起来很方便。进入 lnmp 解压后的目录,执行:
./addons.sh install memcached
可以根据自己需求选择 php-memcache 或 php-memcached 扩展,功能上 php-memcached 更强大一些。我是选择安装 php-memcached。
Starting Memcached...
Starting memcached: done
====== Memcached install completed ======
Memcached installed successfully, enjoy it!
看到上面字样就安装成功了。运行下面命令
php -m | grep memcached
会输出 memcached
测试缓存
<?php
$m = new Memcached();
$m->addServer( '127.0.0.1', 11211 );
$m->set( 'foo', 100 );
echo $m->get( 'foo' ) . "\n";
将上面代码保存为 test.php,然后执行 php -f test.php,输出 100 表示安装成功。
至此,VPS 系统环境已经支持 memcached 缓存。
自动检测 memcached 进程 不存在则重启进程
复制下面代码保存为 memcachedcheck.sh 文件,上传至 root 目录,执行 chmod +x memcachedcheck.sh
#!/bin/sh
#check memcached process and restart if down
DATE=`date -d "today" +"%Y-%m-%d-%H:%M"`
MM=`ps aux |grep "memcached" |grep "11211" |grep -v "grep" |wc -l`
#if语句判断进程是否存在,如果不存在,输出日志记录并重启memcached服务
if [ "$MM" == "0" ];
then
echo "$DATE The memcached is problem and restart" >> /root/memcached_check.logs
service memcached restart
fi
然后添加至 crontab 计划任务,每隔5分钟检测一次。
*/5 * * * * /root/sh/memcachedcheck.sh
WordPress 缓存配置
系统已经支持 memcached,WordPress 也要安装相应支持。
安装 wordpress-pecl-memcached-object-cache 插件,下载地址:https://github.com/tollmanz/wordpress-pecl-memcached-object-cache
下载解压得到 object-cache.php,上传到 wp-content 目录即可开启 memcached 缓存。
注意:若安装的是 memcache,这里需要使用 WordPress 官网上号称 Memcached 的 object-cache.php 插件,并且它只支持 memcache,不支持 Memcached。两者不能混用,否则会出现 WordPress 打不开,前台后台页面一片空白。
检查缓存效果,从官方下载 memcached 探针:http://pecl.php.net/get/memcache-3.0.8.tgz
解压,里面有一个 memcache.php 文件,编辑并找到如下代码:
define('ADMIN_USERNAME','memcache'); // Admin Username
define('ADMIN_PASSWORD','password'); // Admin Password
define('DATE_FORMAT','Y/m/d H:i:s');
define('GRAPH_SIZE',200);
define('MAX_ITEM_DUMP',50);$MEMCACHE_SERVERS[] = 'mymemcache-server1:11211'; // add more as an array
$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array
修改为:
define('ADMIN_USERNAME','memcache'); // Admin 登录名称,自行修改
define('ADMIN_PASSWORD','password'); // Admin 登录密码,自行修改
define('DATE_FORMAT','Y/m/d H:i:s');
define('GRAPH_SIZE',200);
define('MAX_ITEM_DUMP',50);
//下面是定义memcached服务器,一般是单机部署,可注释掉一行,并将服务器地址根据实际修改,一般是127.0.0.1
$MEMCACHE_SERVERS[] = '127.0.0.1:11211'; // add more as an array
//$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array
然后将文件上传到网站私密目录,然后通过前台访问 memcache.php,输入上面的用户名和密码即可看到 memcached 状态。
上面两个文件如果下载不到,可以下载老头备份文件。
其他设置
如果 memcached 状态页面可以打开,但是里面没有Hits数据,可以刷新多几次 WordPress 博客页面,如果还是没有,说明 WordPress 并没有成功连接到 memcached,这时候可以在 wp-config.php 加入如下参数:
global $memcached_servers;
$memcached_servers = array(
array(
'127.0.0.1', // Memcached服务器IP
11211 // Memcached服务器端口
)
);
memcached 实际监听 IP 和端口,可以通过如下命令查看:
netstat -nutlp | grep memcache
如果调整 Memcached 最大占用内存大小?
CentOS 7 Memcached 配置路径一般是 /etc/init.d/memcached,修改其中 CACHESIZE 配置即可:
vi /etc/init.d/memcached
CACHESIZE=256 #单位M,默认256M,一般博客 64M 就绰绰有余。
修改完成重启一下服务:
systemctl daemon-reload
service memcached restart #重启生效
手工安装可参考张戈博客详细教程:WordPress启用memcached动态缓存以及报错解决
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫