2007年3月23日 星期五

關於IIS上跑php效能測試--很值得參考

本文由 台灣深藍vBulletin技術論壇站長 ckmarkhsu 撰寫,歡迎轉載唯轉載請保留全文與出處

http://www.twvbb.com/vbb/thread/30/1077/

===========================================================

這份心得能夠成文,過程可說是血跡斑斑


首先我們討論 WebServer

在這篇文章中 http://www.twvbb.com/vbb/thread/30/290/ 我提到Win 平台下 apache 版本的選用

根據測試,Apache2.0.x 的效能顯然遠勝於 Apache1.4.x (至少是 3 倍)

但若您的論壇(以下均以 vBulletin 3.5 為例)每十五分鐘達 200 人以上同時在線

您便會發現 Apache 會不時的 Crash(崩潰),CPU 資源使用 99%,且無法自己重新啟動

這點困擾我非常久,敝人有個 400~500 人同時在線的論壇,每日 Crash 三四次,實讓我不勝其擾

起先我認為是 PHP 的記憶體溢位或者是 APC 相關軟體的問題,但更換或關閉後均無改善

在歷時一個月的測試與評估後,技術管理群一致認為

引用:
Apache 於 WinNT 平台在未知的原因下會導致記憶體致命的錯誤(這只是猜測)


但如果不用 Apache 那該怎麼辦呢? 我們考慮過了雷電 HTTP,IIS6。

最後考慮到與 WinNT 系統間最佳化與穩定度,我們決定採用了 IIS

經過目前一段時間測試,事實證明,IIS6 異常的穩定,所謂的異常,就是超乎我們預期

至於效能,我想這也是一個非常重要的考量

根據不嚴謹的測試(以下均將 MySQL 獨立於其他主機)

引用:
雷電HTTPD + ispai-PHP4 效能 = 100% (未安裝 Zend Optimizer)
Apache2.0.x + Apache2-PHP4 效能 = 100% (安裝 Zend Optimizer)
IIS6 + ispai-PHP4 效能 = 120% (安裝 Zend Optimizer)


簡言之,雷電的效能約和 Apache2.0.x 相當,但 IIS6 效能約是他們的 1.2 倍

最後我們又測試了 Zend 與 Microsfot 合作開發的 ZendCore 套件

(相關新聞可以參考 http://www.goodman-lai.idv.tw/2006/1...cgiphpiis.html)

以下又是不嚴謹的測試

引用:
IIS6 + ispai-PHP4 效能 = 100% (安裝 Zend Optimizer)
IIS6 + fcgi-PHP5.2RC6-Win 效能 = 125% (安裝 ZendCore2 for Win)


以目前測試版來說,IIS6 + ZendCore2 效能約是 IIS6+isapi-PHP4 的 1.25 倍

一般認為,IIS6 配合 ISAPI 效能遠高於 FCGI,但如果未來 ZendCore2 for Win 推出後恐可扭轉這個事實


IIS6 與 MySQL 平均 CPU 使用率

(以下是以 vBulletin 3.5 為例,若其他 CMS 應該 WebServer 的負載不會這麼高)

約是 IIS6 90% CPU 使用量, MySQL 10% CPU 使用量

Windows 版本之選擇

依據長期的測試經驗

Windows9x 系列根本不適合當作伺服器系統(這不用多做解釋吧)

而 WinXP 系列雖然使用 NT5.1 核心,但其記憶體管理與網路架構效率仍相當糟糕

使用 Apache2.0.x 架設時會有嚴重的 session 數瓶頸,且其 IIS 具有 10 個 session 的限制

因此我較推薦的是 Win2003 系列,不但在記憶體管理和網路架構上有較高效率,且 IIS6 一有較好的穩定度

後記

最後來一個不嚴謹的參考數據

WebServer
Core2 E6300 + Win2003
IIS6 + isapi-PHP4.4 + ZendOptimizer3 + vBulletin 3.5

約可以負載到 800 人順暢瀏覽,其他論壇系統(phpBB2, DZ) 應該高於此值

至於有人會問為什麼不改用 FreeBSD 或是 Linux 呢? 當然是有不得已的苦衷啦^^"


感謝 台灣某大FTP站長與台灣深藍學生聯合論壇技術管理員 petercpg 友情幫忙

以上文章由 台灣深藍vBulletin技術論壇 站長 ckmarkhsu 撰寫

沒有留言: