一直都是用军哥的 lnmp 一键安装包来配置服务器环境,最近一个月来,网站流量上来了些,可能还有其他原因,导致服务器负载不太稳定,负载时不时会飙升好几倍甚至十几倍,访问就非常慢啦。昨天下午直接导致服务器 nginx 进程死掉了,想来想去,最后还是决定配置 lnmp 1.1 ,顺便安装 Xcache 对象缓存扩展,配合之前的 Memcached 内存缓存一起,负载很明显就下来了,内存占用也小多了。

XCache 简介

XCache 是一个国人开发的又快又稳定的 PHP opcode 缓存器. 经过良好的测试并在大流量/高负载的生产机器上稳定运行。经过 (在 linux 上) 测试并支持所有现行 PHP 分支的最新发布版本。

了解更多信息,请访问官方文档:http://xcache.lighttpd.net/

Lnmp 下安装 XCache

lnmp 安装包已经集成了安装脚本,进入 lnmp 解压后的目录,执行:./xcache.sh 运行后有如下提示 (1.1 版本):

0108-cmhello_com

一个有两个版本可以选择,分别是 XCache 2.0.1 和 XCache 3.1.0 ,建议安装 XCache 3.1.0 输入 new 回车,出现 「Press any key to start...or Press Ctrl+c to cancel「,再次回车确认即可开始安装。安装过程会让你输入 Xcache 管理员密码,输入即可。默认管理员用户名是 admin 。

安装好以后,访问 http://你的服务器 IP/xcache/    输入 admin 用户名和密码就可以登录管理界面:

0109-cmhello_com

点击右上角的 「诊断」,可以看到你目前的 Xcache 设置是否存在什么问题,而且给出了解释和建议,非常人性化。

0110-cmhello_com

设置 XCache

Xcache 的设置选项在 php.ini 里,lnmp 1.1 自动添加的如下:

;xcache

[xcache-common]

extension = xcache.so

[xcache.admin]

xcache.admin.enable_auth = On

; 默认的管理员用户名,你可以修改 admin 为其他用户名

xcache.admin.user = "admin"

;run: echo -n "yourpassword" |md5sum |awk '{print }' to get md5 password 以下是密码,就是安装时设置的 (MD5 加密)

xcache.admin.pass = "5ed1b644b258a5cc83"

[xcache]

xcache.shm_scheme =        "mmap"

; 对象缓存的大小,默认好像是 20M,可能不够用,自己修改大些

xcache.size  =               20M

; set to cpu count (cat /proc/cpuinfo |grep -c processor)

xcache.count =                 1

xcache.slots =                8K

xcache.ttl   =                 0

xcache.gc_interval =           0

; 变量缓存大小,默认是 4M,一般的程序是没有用到这个缓存的,可以不理会

xcache.var_size  =            4M

xcache.var_count =             1

xcache.var_slots =            8K

xcache.var_ttl   =             0

xcache.var_maxttl   =          0

xcache.var_gc_interval =     300

xcache.readonly_protection = Off

; for *nix, xcache.mmap_path is a file path, not directory. (auto create/overwrite)

; Use something like "/tmp/xcache" instead of "/dev/*" if you want to turn on ReadonlyProtection

; different process group of php won't share the same /tmp/xcache

xcache.mmap_path =    "/dev/zero"

xcache.coredump_directory =   ""

xcache.experimental =        Off

xcache.cacher =               On

xcache.stat   =               On

xcache.optimizer =           Off

[xcache.coverager]

; enabling this feature will impact performance

; enable only if xcache.coverager == On && xcache.coveragedump_directory == "non-empty-value"

; enable coverage data collecting and xcache_coverager_start/stop/get/clean() functions

xcache.coverager =          Off

xcache.coveragedump_directory = ""

;xcache end

我们一般就修改一下管理员用户名 xcache.admin.user  和  对象缓存大小 xcache.size  即可,当然,如果你使用了 XCache 的变量缓存,也可以进行相应设置  xcache.var_size  、 xcache.var_slots  等。

更详细的设置说明,请看官方文档:http://xcache.lighttpd.net/wiki/XcacheIni

WordPress 使用 Xcache 进行变量缓存

Xcache 不仅可以缓存 php,还可以缓存变量 (类似于 Memcached),就是上面图中的 Var 缓存,对于 WordPress,只需要下载 https://WordPress.org/plugins/xcache/ 插件,解压后,将里面的 object-cache.php 上传到 wp-content 目录即可。

注意:

如果你一个主机安装了多个 WordPress,请使用不通过的数据库表前缀,比如 wp_ 、 wp2_ ,否则可能会导致变量冲突!

如果你之前使用了 Memcached 进行变量缓存,请不要同时使用 Xcache 的变量缓存功能,两者选其一!!