Debian PHP APC 安裝

最近機器被狂操, 明明 Request 就每秒才 10幾個而已, 居然就頂不住, 而且最糟糕的是, 來源是莫名奇妙的來源(IP 反查也找不到), 可能連 IP 也是偽造的?...

而那些 Request 都是針對 我的 Blog 而來, 但卻撐不住, 猜想可能是 Lifetype 的 class是切太細, 檔案太多的問題.

Lifetype 有另外一個設定, 是讓 smarty 的 cache 時間設長一點(http_cache_lifetime), 但是這樣子造成留言與回應者無法馬上看到結果, 也不是好解法~

所以先假設是上述的問題, 應該是加 apc 可以解決掉才對,所以來裝裝 APC 吧.(真希望有 apt-get install php5-apc)... XD

安裝方法也很簡單, 就是用 PECL(PHP Extension Community Library): 直接 command line  執行 pecl 就會看到用法, pecl 其它好用的東西如 xdebug, apd, APC, bcompiler, memcache 等, 裝法都類同, 只是在設定上有些不同, 有空的話再來寫~目前還是 APC比較重要.

安裝 APC: Alternative PHP Cache 步驟如下:

  1. apt-get install php5-dev (php4 是 php4-dev) # phpize
  2. pecl install APC (如果 apache 不是自己 compile 的, 第一個問題(apxs)輸入 no)
  3. 安裝完成會看到 /var/tmp/pear-build-root/install-APC-3.0.14/ /usr/lib/php5/某年月日/apc.so 等訊息, 告知 apc.so 放到哪邊去.
  4. vi /etc/php5/conf.d/apc.ini 檔案內容只要先 extension=apc.so 這行即可.
  5. cp /var/tmp/pear-build-root/install-APC-3.0.14/apc.php 拷到你通常在觀察的目錄, 當做平常監控一起看.(可以看 apc cache 哪些檔案, 剩下多少, hit rate 多少.. 等等)
  6. 再來 /etc/init.d/apache restart, 然後去看看 http://xxxxx/apc.php,就會看到了.(預設放在 pear(/usr/share/php) 路徑並用到的 和 include 的, 都會被 cache進去.

再下來是 /etc/php5/conf.d/apc.ini 其它設定:

extension=apc.so
apc.enabled=1
apc.shm_segments=1
apc.shm_size=128 ; 要讓 apc 使用多少 ram
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
; apc.mmap_file_mask=/tmp/apc.XXXXXX ; Cache 應該沒那麼重要, apc.XXXXXX 直接寫這樣子, XXXXXX 不用修改(它會自動產生 unique file 的意思)
apc.enable_cli=0 ; Command line 不需要 apc, 有需要請自行改成 1

其它更多的設定, 應該在 apc.php(Runtime Settings) 可以看到.

然後 apc.php 裡面也有幾個地方要設定:

  • 先找到 defaults('USE_AUTHENTICATION',1); 這行, 如果你要看到詳細的 apc 報告(apc.php) 就將 1 改為 0, 這樣子不用登入就可以看到詳細的 apc 內容.
  • 下述兩點是 USER_AUTHENTICATION 設 1 的狀況下:
    1. 沒登入的話, apc.php 的System Cache Entries選項會把檔案路徑表示為<hidden>.
    2. 預設是1, 那建議 defaults('ADMIN_USERNAME','apc');, defaults('ADMIN_PASSWORD','password'); 這帳號/密碼要自行修改一下.

這樣子就可以快樂使用囉, 進階的應用還有 apc_store(), apc_fetch()...等, 有需要者再自行去查閱吧~ 🙂

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料