一直都是用軍哥的 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 的變量緩存功能,兩者選其一!!