此乃战帖,必火!之前某次讨论中老赵坚称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还有不少不合理的地方所以才有优化的空间,不是么?
最后希望能够有机会对比实践的同学能够给出具有说服力的测试和数据。或者我还是该牺牲一下假期坚持把测试做完?有哪位好心人能够提供我多余的机器呢?
新闻热点
疑难解答