[分享]Windows 平台高負載 PHP 論壇架設心得

Webmasters Discussion
站長們到此分享架站甘苦、管理心得等;歡迎大家多多提出意見喔!
(請勿發表任何跟站長經驗分享不相干的文章,違者砍文)

版主: 版主管理群

回覆文章
ckmarkhsu
星球公民
星球公民
文章: 139
註冊時間: 2005-03-21 09:38

[分享]Windows 平台高負載 PHP 論壇架設心得

文章 ckmarkhsu »

本文由 台灣深藍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/11/f ... hpiis.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 撰寫
台灣深藍vBulletin技術論壇

vBulletin 論壇系統,內建

「0 修改新增插件」「完整附件功能」「無限深度子論壇」「進階權限管理」「前台 AJAX 即時管理」

歡迎研究:)
chiouss
竹貓忠實會員
竹貓忠實會員
文章: 1741
註冊時間: 2002-11-29 18:19

Re: [分享]Windows 平台高負載 PHP 論壇架設心得

文章 chiouss »

ckmarkhsu 寫:根據測試,Apache2.0.x 的效能顯然遠勝於 Apache1.4.x (至少是 3 倍)
你該先解釋一下你從哪弄出 Apache 1.4.x? Orz
但如果不用 Apache 那該怎麼辦呢? 我們考慮過了雷電 HTTP,IIS6。
我想我會去試看看用 lighttpd :Q

其實啦...就算用 Windows 也是可以裝 cygwin 然後自己編 Apache 2.0,不然還可以跑 VMware 然後在上面裝 UN*X 然後... (謎之音:來人!拖出去宰了...

用 worker mpm + php-fcgi 應該不錯。winnt mpm 效果比 Apache 1.3 好這點官方都這樣說過了,沒什麼好懷疑。至於你提到人多 Apache2 會死掉的問題,要不要去官方的 bug tracker 喊兩下?我的站都是自己玩玩居多,沒這麼多網友幫我玩 (還是說用 ab 來玩就可以了? Orz)
a9v589
星球公民
星球公民
文章: 63
註冊時間: 2006-09-02 03:22

文章 a9v589 »

VBB比起Discuz IPB PHPWind 等等論壇程式更耗資源
但VBB開啟頁面的速度反而是非常快的
因為所有的東東都是資料庫化
但假如你的主機不夠力,勸你還是不要用VBB了
不過如果你只是要跑跑那些每十五分鐘達 200 人同時在線的小論壇
那麼我認為可以無視VBB和其他論壇程式在同樣負載下多使用的效能
VBB還是你的最佳選擇

Zend Optimizer這東西對 VBB而言根本是垃圾
裝了一點用處都沒有,Discuz才需要這
裝eAccelerator的話,負載能力起碼多上一倍

Core2 E6300 這隻大雕跑VBB
才餵他800人,真是浪費了...
換個Linux平台,搭配多一點的RAM, 優化系統後
水管夠粗的話,跑個2000人應該不成問題吧
進藤光
星球公民
星球公民
文章: 291
註冊時間: 2005-03-16 18:48
來自: BNW 時尚資訊網
聯繫:

Re: [分享]Windows 平台高負載 PHP 論壇架設心得

文章 進藤光 »

chiouss 寫:你該先解釋一下你從哪弄出 Apache 1.4.x? Orz
地下網站?打錯了?? :mrgreen:
剛剛去查了一下他的網站還是這個啊:

Windows Server 2003 Apache/2.0.59 (Win32) PHP/4.4.2

說了這麼多 IIS6 有多好用,有多穩、多快、不會哎哀叫,搞半天還是在跑 Apache 2.x .... XD :mrgreen:
我以前也是用 Windows Server 2003 + IIS 6,很清楚跑起來情況如何!雖然沒有這麼多線上網友,不過卻有很多 "線上駭客" 在幫我找漏洞!XDDDD :mrgreen: :mrgreen: :mrgreen:
※架設伺服器主機:Mac mini G4-1.5GHz, 1GB RAM 三台
※架設主機作業系統:Mac OS X Server 10.4.2 Tiger
※我的上網方式:固定制 ADSL 4M/1M、3 IP
※安裝的伺服器:Apache 1.3.33 + php 4.3.11 + MySQL 5.0.19-max
※我的 phpBB2 版本:phpBB 2.0.21 UTF-8 版
※我的會議室網址: http://bbs.bnw.com.tw/conference/
chiouss
竹貓忠實會員
竹貓忠實會員
文章: 1741
註冊時間: 2002-11-29 18:19

Re: [分享]Windows 平台高負載 PHP 論壇架設心得

文章 chiouss »

進藤光 寫:剛剛去查了一下他的網站還是這個啊:

代碼: 選擇全部

Windows Server 2003	 Apache/2.0.59 (Win32) PHP/4.4.2
說了這麼多 IIS6 有多好用,有多穩、多快、不會哎哀叫,搞半天還是在跑 Apache 2.x .... XD :mrgreen:
他也沒說是拿自己的站來測阿... :P

等那個 IIS 用的 fastcgi 弄好我再考慮看看要不要在 Win32 上面用 IIS 好了 Orz

現在看 http-error.log 還是一天到晚有亂七八糟的人在亂掃,攻擊 IIS 的還是居多。其他還有打 horde, phpmyadmin 這些 project 的、找 open proxy 的...。我在考慮要不要拿 crash_ie.html 來當 403 的 error page?聽說打 IIS 的程式 (病毒?) 碰到 crash_ie.html 也會葛屁的樣子 :mrgreen:
進藤光
星球公民
星球公民
文章: 291
註冊時間: 2005-03-16 18:48
來自: BNW 時尚資訊網
聯繫:

Re: [分享]Windows 平台高負載 PHP 論壇架設心得

文章 進藤光 »

chiouss 寫:他也沒說是拿自己的站來測阿... :P
也對~原來是拿別人的網站來惡搞一番... XD :mrgreen:
很多豬頭駭客反正是亂槍打鳥,看看哪個網站能被他幹掉而已... 例如:

BNW 網站上看起來像是有 .asp 跟 .dll 嗎?豬頭... http://bbs.bnw.com.tw/conference/viewtopic.php?t=377
暑假到了,所以 "亂駭一通" 豬頭駭客也變多了? http://bbs.bnw.com.tw/conference/viewtopic.php?t=617
黃金聖戰士ヒカル -VS.- 企圖用 VNC 遙控の豬頭駭客 http://bbs.bnw.com.tw/conference/viewtopic.php?t=784

其他各式各樣奇奇怪怪的少數 error_log 就沒有列出來了... 不過自從封鎖掉很多大陸 IP 以後,這類的豬頭攻擊就比較少了... 嘿嘿嘿~~ :mrgreen:

至於 403 等錯誤訊息也已經被我移除掉了,連錯誤訊息也不給駭客看... XD :mrgreen:
※架設伺服器主機:Mac mini G4-1.5GHz, 1GB RAM 三台
※架設主機作業系統:Mac OS X Server 10.4.2 Tiger
※我的上網方式:固定制 ADSL 4M/1M、3 IP
※安裝的伺服器:Apache 1.3.33 + php 4.3.11 + MySQL 5.0.19-max
※我的 phpBB2 版本:phpBB 2.0.21 UTF-8 版
※我的會議室網址: http://bbs.bnw.com.tw/conference/
ckmarkhsu
星球公民
星球公民
文章: 139
註冊時間: 2005-03-21 09:38

Re: [分享]Windows 平台高負載 PHP 論壇架設心得

文章 ckmarkhsu »

chiouss 寫:你該先解釋一下你從哪弄出 Apache 1.4.x? Orz
Orz.....其實是我自己釋出的XD 拍謝 1.3.x 啦:p
我想我會去試看看用 lighttpd :Q

其實啦...就算用 Windows 也是可以裝 cygwin 然後自己編 Apache 2.0,不然還可以跑 VMware 然後在上面裝 UN*X 然後... (謎之音:來人!拖出去宰了...

用 worker mpm + php-fcgi 應該不錯。winnt mpm 效果比 Apache 1.3 好這點官方都這樣說過了,沒什麼好懷疑。至於你提到人多 Apache2 會死掉的問題,要不要去官方的 bug tracker 喊兩下?我的站都是自己玩玩居多,沒這麼多網友幫我玩 (還是說用 ab 來玩就可以了? Orz)
其實是有不得已的苦衷不然也不想用WinNT Orz....

不過明年八月應該會轉移到 FreeBSD 平台:p

他也沒說是拿自己的站來測阿...
是自己的站阿:p 一個人可以有一個以上的站XD

twvbb 只是隨手架的筆記本,且我還需要 apache 當作一些案子的測試平台,所以沒換:)

我的數據比例是用 ab 測的,但穩定度是實際上線跑出來的心得
台灣深藍vBulletin技術論壇

vBulletin 論壇系統,內建

「0 修改新增插件」「完整附件功能」「無限深度子論壇」「進階權限管理」「前台 AJAX 即時管理」

歡迎研究:)
ckmarkhsu
星球公民
星球公民
文章: 139
註冊時間: 2005-03-21 09:38

文章 ckmarkhsu »

a9v589 寫:VBB比起Discuz IPB PHPWind 等等論壇程式更耗資源
但VBB開啟頁面的速度反而是非常快的
因為所有的東東都是資料庫化
但假如你的主機不夠力,勸你還是不要用VBB了
不過如果你只是要跑跑那些每十五分鐘達 200 人同時在線的小論壇
那麼我認為可以無視VBB和其他論壇程式在同樣負載下多使用的效能
VBB還是你的最佳選擇

Zend Optimizer這東西對 VBB而言根本是垃圾
裝了一點用處都沒有,Discuz才需要這
裝eAccelerator的話,負載能力起碼多上一倍

Core2 E6300 這隻大雕跑VBB
才餵他800人,真是浪費了...
換個Linux平台,搭配多一點的RAM, 優化系統後
水管夠粗的話,跑個2000人應該不成問題吧
WinNT 效率不彰,800 已經是順暢的極限了,不過換成 Unix-like 也不可能到 2000 啦XD

至於 ZendOptimizer 其實還是有用的,只是他效果不如 eAccelerator (這跟 dz 有什麼關係!?)

但根據 ab 跑出來的數字,沒有到一倍這麼誇張 8-)
台灣深藍vBulletin技術論壇

vBulletin 論壇系統,內建

「0 修改新增插件」「完整附件功能」「無限深度子論壇」「進階權限管理」「前台 AJAX 即時管理」

歡迎研究:)
chiouss
竹貓忠實會員
竹貓忠實會員
文章: 1741
註冊時間: 2002-11-29 18:19

文章 chiouss »

ckmarkhsu 寫:至於 ZendOptimizer 其實還是有用的,只是他效果不如 eAccelerator (這跟 dz 有什麼關係!?)
eAccelerator 會 cache php code parse 的結果,如果 vbb 的主要 loading 是在 db 而不是在 php code pharse 上面的話那就沒有太大的用處。上回你跟我說 vbb 的 template 塞在 db 裡面的時候我們討論了好一陣子 :P

根據網站類型的不同,需要 tune 的東西也不一樣。就像上面我說的,MySQL 也可以 tune 它的 performance,Apache 也有很多方法可以動 (有一堆實驗性質的 module 可以用);不是今天你家這樣設定跑起來可以 work 的做法搬到別人家就一樣可以 work,所以這些經驗可以拿來參考、討論,但是不需要爭論 :P
ckmarkhsu
星球公民
星球公民
文章: 139
註冊時間: 2005-03-21 09:38

文章 ckmarkhsu »

chiouss 寫:
ckmarkhsu 寫:至於 ZendOptimizer 其實還是有用的,只是他效果不如 eAccelerator (這跟 dz 有什麼關係!?)
eAccelerator 會 cache php code parse 的結果,如果 vbb 的主要 loading 是在 db 而不是在 php code pharse 上面的話那就沒有太大的用處。上回你跟我說 vbb 的 template 塞在 db 裡面的時候我們討論了好一陣子 :P

根據網站類型的不同,需要 tune 的東西也不一樣。就像上面我說的,MySQL 也可以 tune 它的 performance,Apache 也有很多方法可以動 (有一堆實驗性質的 module 可以用);不是今天你家這樣設定跑起來可以 work 的做法搬到別人家舅一樣可以 work,所以這些經驗可以拿來參考、討論,但是不需要爭論 :P
嗯,我上面有提大概的數據,vB 可能因為大量 OO,90% 的 loading 都卡在 php(其實這出乎我原本想像)

所以 cache效果的影響差距很大,我想我跟他討論的 focus 是一樣的喔:O

ZendOptimizer 其實跟 eA 差不多,只是他多了一些商業的東東

只是根據某神秘的人說法,他對於較大的 PHP cache 效能不好:O



其實我沒堅持什麼,只是跟大家分享一下 ab 和實際 work 出來的心得罷了

大家聽聽就好,如果覺得沒啥用就當作放屁吧:)
台灣深藍vBulletin技術論壇

vBulletin 論壇系統,內建

「0 修改新增插件」「完整附件功能」「無限深度子論壇」「進階權限管理」「前台 AJAX 即時管理」

歡迎研究:)
chiouss
竹貓忠實會員
竹貓忠實會員
文章: 1741
註冊時間: 2002-11-29 18:19

文章 chiouss »

ckmarkhsu 寫:ZendOptimizer 其實跟 eA 差不多,只是他多了一些商業的東東
只是根據某神秘的人說法,他對於較大的 PHP cache 效能不好:O
我因為找不到免費的 ZendOptimizer (應該還是免費吧?) 所以好久沒用了,之前的版本用起來感覺差異也不大。但是某台我有權限的 FreeBSD 裝了 eAccelerator 之後速度差很多 (用 mod_php4,開 WordPress),之前還試過用 lighttpd 跑 php-fcgi + eAccelerator :mrgreen:
ckmarkhsu 寫:其實我沒堅持什麼,只是跟大家分享一下 ab 和實際 work 出來的心得罷了
大家聽聽就好,如果覺得沒啥用就當作放屁吧:)
我沒有刻意說誰在堅持什麼阿 :P
只是看看之前這類討論到最後都是各說各話的結局,所以講一下而已 :Q

另外,lighttpd 有 Win32 的版本喔 (用 cygwin 編出來的),跑起來速度還不錯,但是之前玩的時候 php-fcgi 就是不會成功 (用 php-cgi -v 看到的明明是有 fcgi 版本沒錯阿 :~),所以只測了 cgi 模式。如果網站沒有對某些 Apache module 有很大的需求的話 (ex. htaccess),lighttpd 是個不錯的替換選擇。

至於前面說的 Apache 2.x 用 worker mpm 因為 FreeBSD ports 裡面的 PHP 要自己改過 Makefile 才可以開啟 Zend Thread Safety (或是用 mod_fastcgi + php-fcgi) 所以我就沒有測試了,官方的說法是說有些 extension 不支援 multi-thread,會出問題。或許您換平台的時候可以多玩玩幾種方式再決定要怎麼跑? :P
michaelchain
星球公民
星球公民
文章: 129
註冊時間: 2006-10-17 03:13

文章 michaelchain »

我想说一下自己的意见。在架站的性能上,我曾经做过一些测试。在windows底下跑apache + PHP不是一个好选择,在windows下apache有诸多的内耗。
如果你能注意一下局域网内连接windows下架站和linux下架站的同样配置服务器(同样硬件、同样版本之apache, PHP, MySQL, 同样的phpbb),在单个用户下windows的反应速度就已经明显不如linux,windows下的页面生成速度(phpbb页标下角的生成速度)一般是linux的5~8倍之多。在零负荷下,对于大小差异甚大的页面,windows下生成页面时间不会反应出很大的变化,linux下生成页面时间就会。在负载达到一定程度时,windows服务器会有一个跳变,在这之后几乎无法正常访问,出现大量服务器错误;而linux是比较偏向线性的,能承受的用户比windows多,甚至在超负荷后,依然能正常访问-但是速度会很慢。
这是我对windows下服务器的一些看法。就如同oralce一样,在linux和unix下运行流畅无比,但是windows下非常难tune,因为:
这些东西都是在linux下开发的,而后才被移植到其他的平台,在其他平台上的测试只能解决一些bug,在性能上的bug会放到次要的位置,因为这些bug等级很低-大多数人不会在windows服务器上跑apache、oracle。
※伺服器主機:Intel Core2 酷睿™2 E6300, 升級到4GB RAM了
※主機作業系統:CentOS 4 Linux
※我的 phpBB 版本:phpBB3.0.?
※我的網址: 中文PHPBB
回覆文章

回到「站長交流」