此乃戰帖,必火!之前某次討論中老趙堅稱IIS的性能不比nginx來得差,但是很多linuxer堅信強悍的Nginx乃IIS殺手,所以今天我想和大家共同探討的是如何公平公正的對比web服務器的性能。希望對正在做系統選型的同學有所幫助。
本來今天打算找機器來做對比測試,不過某大牛的一席話讓我茅塞頓開,遂打消了此念頭。
首先,我們必須承認的一點是,IOCP,EPOOL以及KQUEUE在本質上并沒有太大的區別,對于成熟的商業公司和全球性的開源組織來說其最終實現的效率不會有太大的區別。這一點是討論的基礎,狂熱的anti ms分子狂扁windows一無是處的說法不足以作為論據,當然一說windows哪里不足就仿佛被抓住痛腳立馬反擊也是不可取的。
第二點,拋開應用服務器的性能差異,ASP.NET還是java,什么的,我們暫時拋開,一般來說,借用絕世好bra的臺詞,在應用服務器down掉前,一般web服務器是不會down的。所以web服務器的處理能力應該遠遠高于應用服務器。那么現在我們純粹對比的就是對靜態文件的處理能力了。
對靜態文件的處理能力,大文件處理的性能對比是沒有意義的,大文件傳輸考察的帶寬而不是服務器性能。所以要對比的就是對小文件的并發處理能力,由于在網絡層面的優劣并不明顯,所以最終影響結果的就是文件系統的優劣了,這也是打消我進行測試的主要原因:linux下可以選擇的文件系統有好幾個,挨個測試我的假期就泡湯了。
現在條理已經理清楚了,那么測試其實就是在對比NTFS和linux下可用的ext3,ext4,Reiserfs等文件系統性能,其實這也是IIS和Nginx對比測試結果各異的由來,而linux的影響因素太多了,內核網絡參數調優,文件系統等都能夠左右測試的結果。
不過在常規情況下,未經過特別調優作為前提來考量的話,linux下nginx的性能是超過IIS的,因為linux從某種意義上來說,是一種文件型的操作系統,連設備都是掛載到一個文件符號,當做一個文件來處理,其本身在處理文件的能力上是超過windows的。
當然windows2003~2008在性能上的提升我是真沒測試過,2008是不是有飛一般提升?對我來說還是未知數,不過換個角度來看,如果2008還有很大提升空間的話說明2003還有不少不合理的地方所以才有優化的空間,不是么?
最后希望能夠有機會對比實踐的同學能夠給出具有說服力的測試和數據。或者我還是該犧牲一下假期堅持把測試做完?有哪位好心人能夠提供我多余的機器呢?
新聞熱點
疑難解答