Windows Server 2008 R2網站服務性能對比
WebBench是針對服務器作為WebServer時的性能進行測試,我們在被測服務器上安裝了IIS組件,以提供測試所需的Web服務。在測試中我們使用了網絡實驗室中的60臺客戶端,配置了120個測試引擎,分別使用了WebBench5.0內置的動態CGI以及靜態頁面腳本對服務器進行了測試。
網絡實驗室控制臺
靜態測試是由客戶端讀取預先放置在服務器WebServer下的Web頁面(wbtree),這項測試主要考察的是服務器磁盤系統以及網絡連接性能。我們使用了實驗室中的56臺客戶端,配合Static_mt.tst多線程靜態腳本測試向被測服務器發送請求。
動態測試偏重于對服務器CPU子系統的性能測試,它對于Web服務器提供了足夠的負載。我們將一個C語言編寫的CGI源文件Simcigi.c編譯為Simcgi.exe,并將其作為動態測試中的CGI腳本。在測試過程中,每臺安裝了WebBench客戶端軟件的PC,會在300秒的時間內持續向服務器發送CGI請求,而控制臺會紀錄并匯總服務器所響應CGI請求的數據。CGI測試的成績高低,主要取決于服務器處理器子系統性能的優劣。處理器子系統包括CPU、內存以及內存控制器,CPU頻率、緩存以及內存容量大小和內存帶寬,都會影響該項成績。
我們采用了評測中心的一臺DELLPE2900III服務器,它配置了雙路Intel45nmXeonE5430處理器,頻率為2.66GHz,并能支持SSE4.1指令集。服務器還使用了Intel5000X芯片組,提供24MB的SnoopFilter緩存,這可以提升高負荷時的內存/處理器性能。為了避免磁盤子系統形成瓶頸,我們使用了8塊15000RPM的Cheetah15K.5通過一塊PCIex8接口的LSIMegaRAIDSAS8408E來組建了一個RAID0陣列。它可以提供足夠的帶寬。
***,網絡子系統使用的是DELLPE2900III板載的兩塊BroadcomBCM5708C千兆網卡,并使用了Broadcom的***驅動12.26.02并使用BroadcomBACS3.0組建了一個網卡Team。BCM5708C可謂是Broadcom一個里程碑式的千兆網卡產品,支持達8個隊列的RSS接收方縮放隊列,可以將網絡負載分配到8個處理器核心上并行處理,充分利用多核心處理器并提升網絡吞吐量。
兩代操作系統攜帶的IIS(InternetInformationServer)版本不同,2008帶的是IIS7.0,而2008R2帶的是IIS7.5。2003攜帶的是IIS6.0。
在結果上,我們發現WindowsServer2008R2/IIS7.5的動態頁面性能要比WindowsServer2008/IIS7.0高一點,***達到了5724Rps,而2008是5181,2008R2的峰值大概高了10%左右。靜態頁面的性能表現因為結果很奇怪還在調試中(可能和驅動有關)。
從原因上來說,筆者覺得IIS的關系不是很大,造成提升的因素應該和NetBench中一樣,最主要的是兩個方面:系統內核和網絡子系統,WindowsServer2003的中斷處理只能在***個物理CPU核心上進行,這個核心很快就成為了具有大量IO(因而具有大量中斷)的服務器中的瓶頸。而到了WindowsServer2008,中斷處理(ISR和DPC)都可以發生在多個CPU核心上。而WindowsServer2008R2對DPC的處理又做了改進。關于內核上的改進可以參閱這里:
至于網絡子系統的改進,每一代Windows都會改進其NDIS(NetworkDriverInterfaceSpecification,即網絡驅動接口規范),WindowsServer2003是5.2,2008是6.10,而2008R2是6.20。相比NDIS5.x/6.0,WindowsServer2008的NDIS6.1對RSS(接收方擴展)和MSI-X(擴展消息告知中斷)的支持更好,并且支持數據包的頭和數據獨立處理。WindowsServer2008R2的NDIS6.20對RSS作了進一步的改進。不過,我們在2008/2008R2測試下使用的驅動程序都是基于NDIS6.0架構,因此最終結果上來看,兩個操作系統的差別不算太大。