20
Jun

linux下启用WordPress的memcached支持

爱写字的服务器优化中,memcached扮演了重要的角色,爱写字过去约8天的运行记录显示,memcached的引入,让爱写字的mysql服务器负载降低了约93%(没错,你没有看错,是降低了93%)。下面的文章完整的介绍了在Linux服务器下,为WordPress安装、配置、监控memcached。

Memcached介绍 []

Danga Interactive 为提升 LiveJournal.com 的速度研发了 Memcached。Memcached是一个高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。

Memcached能缓存什么? []

通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。

Memcached速度有多快? []

非 常快。Memcached使用了libevent(如果可以的话,在linux下使用epoll)来均衡任何数量的打开链接,使用非阻塞的网络I/O,对 内部对象实现引用计数(因此,针对多样的客户端,对象可以处在多样的状态), 使用自己的页块分配器和哈希表, 因此虚拟内存不会产生碎片并且虚拟内存分配的时间复杂度可以保证为O(1).。

关于linux下libevent的epoll的benchmark相关信息,您可以看libevent官方网站提供的这张图这张图

Memcached的特点 []

  1. 分布式
  2. 协议简单
  3. 基于libevent的事件处理
  4. 内置内存存储方式
  5. memcached不互相通信的分布式

安装memcached []

我们采用从源代码编译的方式安装memcached和memcached的依赖包 libevent。

安装libevent []

使用下面的命令下载并将memcached所需要的依赖包 libevent安装到 /usr/local 下。

wget http://monkey.org/~provos/libevent-1.4.11-stable.tar.gz
tar xzf libevent-1.4.11-stable.tar.gz
cd libevent-1.4.11-stable
./configure
make
sudo make install

#刷新库文件连接
ldconfig

安装memcached []

使用下面的命令将memcached安装到 /usr/local 目录下

wget http://memcached.googlecode.com/files/memcached-1.2.8.tar.gz
tar xzf memcached-1.2.8.tar.gz
cd memcached-1.2.8
./configure --enable-threads
make
sudo make install

#增加用户组memcached和用户memcached
/usr/sbin/groupadd memcached
/usr/sbin/useradd -g memcached memcached

#建立memcache 锁文件存放目录
mkdir /var/lock/subsys
chmod 777 /var/lock/subsys

让memcached开机自动启动 []

在这里下载爱写字所用的memcached启动文件,重命名为memcached,并放入 /etc/init.d 目录。如果您使用的是debian的base system,请下载本function文件,解压缩后放入/etc/init.d目录。使用命令

chmod +x /etc/init.d/memcached /etc/init.d/functions

将下载的文件设置为可执行,按照需要修改memcached文件中的以下配置。如果你不清楚下面的各设置的作用,请勿修改,特别是PORT设置。

#memcached的运行端口
PORT="11211"

#运行用户
USER="memcached"

#最大连接数
MAXCONN="2048"

#Cache大小,64表示设置为64M
CACHESIZE="64"

#其他设置,没有就留空
OPTIONS=""

保存后使用下面的命令将memcache注册为系统服务并查看 memcached 服务的自动运行情况,应该在运行级别2,3,4和5下,memcached都是会自动运行的。

chkconfig -add memcached

配置完成后,使用下面的命令启动memcached并检测其状态

#启动memcached
/etc/init.d/memcached start

#连接到memcached缓存服务器
telnet localhost 11211

#查看当前缓存服务器状态
stat

正确配置情况下,输入stat命令后,显示的输出类似下面

memcached正确安装下stats命令的输出

memcached正确安装下stats命令的输出

配置php的memcached扩展 []

我们可以在安装php后,方便的使用pecl来安装php的memcached扩展。

使用下面的命令安装 php的 memcached 扩展

pecl install memcached

安装完成后,查看memcache.so文件被安装到了什么地方,在爱写字安装时,被安装到了

/usr/local/lib/php/extensions/no-debug-non-zts-20060613

确认memcache.so文件所在目录是在php.ini中所指定的extension_dir目录,如果不是,请copy其到相应目录。然后修改php.ini文件,在Dynamic Extensions配置那一段增加下面的配置

extension = memcache.so

完成上述配置后,重新载入php.ini中的配置,调用 phpinfo() 函数查看php是否正确载入了memcache模块,正确安装下,phpinfo()的输出中应该出现下面的信息。

memcached正确安装下phpinfo函数的输出

memcached正确安装下phpinfo函数的输出

安装memcached的监控程序 []

Harun Yayli 仿照APC的状态监控程序,做了一个监控memcached运行情况的小工具,可以在web方式下,监控memcached当前的缓存区使用,缓存命中率,并可在线查看缓存数据。您可以下载用于memcached状态监控的php程序,按照您的需要修改以下配置,请将其重命名为memcached.php,放入能够通过web访问的目录,对memcached的运行状态进行监控。

// 访问监控程序的用户名
define('ADMIN_USERNAME','admin');

// 访问监控程序的密码
define('ADMIN_PASSWORD','admin');

// 显示的时间格式
define('DATE_FORMAT','Y/m/d H:i:s');

//展示缓存状态时生成的饼图的大小
define('GRAPH_SIZE',200);

//在查看item列表时,最多显示的item数目
define('MAX_ITEM_DUMP',50);

// 将希望监控的更多memcached服务器添加为数组元素
$MEMCACHE_SERVERS[] = '127.0.0.1:11211';

在WordPress中启用memcached []

WordPress对memcached及类似的对象缓存系统的支持是很强大的,只需要实现相关缓存操作方法,定义相关的缓存初始化及增删改查、关闭等操作,WordPress即可自动将相关缓存系统引入进来,详细信息可以参考Function Reference/WP Cache(英文)。以下描述了启用WordPress的memcached支持的步骤。

下载WordPress的memcached支持文件 []

在这里下载WordPress的memcache支持所需要的object_cache.php文件,下载解压缩后将其放入WordPress安装的 wp-content 目录下。

修改WordPress配置 []

修改 wp-config.php文件,加入下面的配置

$memcached_servers =  array(‘default’ => array(‘127.0.0.1:11211′));

检验是否设置成功 []

上述设置完成后,请重新启动web服务器或重新载入web服务器配置,然后访问memcached监控页面,查看你访问WordPress后,相关数据是否被memcached缓存成功。

推荐阅读 []

随机日志

载入中…

© 2009, 爱写字开发博客. 版权所有. 转载请注明来自爱写字开发博客

标签:, ,

相关日志

1 条评论了已经

Trackbacks/Pingbacks.

发表评论

名字(必须)
邮箱(必须),(永不被公布)
网址(建议)

Powered by WP Hashcash

字体为 粗体 是必填项目,邮箱地址 永远不会 公布。

允许部分 HTML 代码:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
URLs(网站链接)必须完整有效 (比如: http://dev.ixiezi.com),所有标签都必须完整的关闭。

超出部分系统将会自动分段及换行。

请保证评论内容是与日志或 Blog 内容相关的,灌水、攻击性或不恰当的评论 可能 会被编辑或删除。

 
本WordPress博客由爱写字提供技术支持

Switch to our mobile site