12 月 28 2005
詭異的 eAccelerator
從幾個禮拜前我就在我的 BBS 個人板叫過, 我的 Apache 啟動後過不了多久就會狂噴這種訊息到 error log 裡 :
[warn] (32)Broken pipe: write pipe_of_death
而且 child process 的數量只會一直增加, 不會減少.
如果我沒記錯的話, 這串訊息出現在我把 2.0.54 換成 2.0.55 以後.
所以當時我是決定把 2.0.55 換成 2.2 .
很不幸的, 狀況並沒有變動, 訊息仍然存在.
我一直以為是 Apache 的問題, 直到我在昨天看到 這篇 才恍然大悟. orz
很明顯的, 罪魁禍首是 eAccelerator , 問題出在 debug.c 這支程式的這段:
void ea_debug_shutdown () { fflush (F_fp); fclose (F_fp); F_fp = NULL; }
把 fclose (F_fp);
換成 if (F_fp != stderr) fclose (F_fp);
, 重新 compile & install 就沒事了.
話說回來, 這種 bug 還真是讓人無言以對啊…
4 月 16 2010
[Benchmark] eAccelerator v.s. APC on PHP 5.3
FreeBSD ports tree 的 lang/php5 升級到 5.3.2, www/eaccelerator 也升級到 0.9.6。
但是… 目前,FreeBSD ports tree 的 www/pecl-APC 依然是 3.0.19,無法在 PHP 5.3 運作;為了讓它正常運作,jnlin 送過 PR(我沒有先查詢,也送了一個 )。
其實 eAccelerator 0.9.6 在 2010 年 2 月初就已經釋出了,可是,從 changelog 看來,很多不錯的功能被砍掉(反璞歸真?):
這麼看來,2008 年的這篇文章的參考價值就低了些…
為了滿足我自己的好奇心,就把 APC 3.1.3p1 裝起來測試看看。
系統/硬體:
設定:
測試結果(ab -c5 -n500):
332.834 ms/req.
131.487 ms/req.
112.750 ms/req.
552.822 ms/req.
363.124 ms/req.
168.580 ms/req.
284.979 ms/req.
126.421 ms/req.
135.506 ms/req.
依照結果看來,APC 3.1.3p1 的確略勝 eAccelerator 0.9.6。
可惜的是.. Xcache 目前的最新版本(1.3.0)沒辦法在 PHP 5.3 跑…
By Joe Horn • FreeBSD, PHP, WWW 0 • Tags: Apache, APC, benchmark, eAccelerator, PHP, ports