共计 2970 个字符,预计需要花费 8 分钟才能阅读完成。
站长一直都是用军哥的 lnmp 一键安装包来配置服务器环境,最近一个月来,网站流量上来了些,可能还有其他原因,导致服务器负载不太稳定,负载时不时会飙升好几倍甚至十几倍,访问就非常慢啦。昨天下午直接导致服务器 nginx 进程死掉了,想来想去,最后还是决定配置 lnmp 1.1,顺便安装 Xcache 对象缓存扩展,配合之前的 Memcached 内存缓存一起,负载很明显就下来了,内存占用也小多了。
XCache 简介
XCache 是一个国人开发的又快又稳定的 PHP opcode 缓存器. 经过良好的测试并在大流量 / 高负载的生产机器上稳定运行。经过 (在 linux 上) 测试并支持所有现行 PHP 分支的最新发布版本。要了解更多信息,请访问官方文档:http://xcache.lighttpd.net/
Lnmp 下安装 XCache
进入 lnmp 解压后的目录,执行:./addons.sh install xcache 运行后有如下提示:
需要设置 xcache 管理页面 admin 用户的密码。
出现“Press any key to install…or Press Ctrl+c to cancel“,再次回车确认即可开始安装。
卸载
执行:./addons.sh uninstall xcache
安装好以后,访问 http:// 你的服务器 IP/xcache/ 输入 admin 用户名和密码就可以登录管理界面:
点击右上角的“诊断”,可以看到你目前的 Xcache 设置是否存在什么问题,而且给出了解释和建议,非常人性化。
设置 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 的变量缓存功能,两者选其一!!
错误排查
LNMP:配置过程中,如果你先添加了域名绑定主机,然后再安装 xcache,访问 xcache 管理界面时,可能会提示:
Fatal error: xcache_count(): xcache.admin.user and/or xcache.admin.pass settings is not configured. Make sure you’ve modified the correct php ini file for your php used in webserver. in /home/xxx/xcache/cacher/index.php on line 259
究其原因,打开 php.ini 配置文件:
vi /usr/local/php/etc/php.ini
在 xcache 的配置信息上方,可以看到绑定的域名信息:
这段域名信息在 ;xcache 配置信息的上方,我们将它移到 ;xcache end 的下面,保存重启 php 即可: