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