win2003+IIS6 VS linux+apache
 

文章来源:http://www.donews.com/Content/200602/ce5a8846419a43ebba4568d57c0832d5.shtm

此次参测的方案分别采用了linux和windows两种操作系统,使用的web应用软件为apache和iis。数年来,网上有关这两种平台孰优孰劣的比较一直没有停止过。不过,想要在二者之间做一个详细的比较工作量很大,但应该是一件很有意思的事。在我们这次测试中,由于不同平台采用的硬件都不一样,所以,二者不具有可比性,但测试中的现象还是能够说明一些问题。给人突出的感受是,windows+iis是一个面对各种用户,性能都已经调试到相当高水平的方案,而linux+apache在这方面要逊色。

linux+apache与windows+iis不同,后者在配置一个web站点的时候,只需要配置好目录、地址等参数就可以很好地工作了。linux+apache也要配置这些内容,不过此时它仅能在功能上满足你的要求,使你的站点运转起来,毫无性能可言。我们测试得到的经验是,如果apache的版本采用2.0,根据安装时mpm模块的选择,可以针对性能做出有效调整,修改几个参数就能使性能陡升。对于用户来说,也许这点工作并不算什么。

但是,做出这些调整后可能还是不能令人满意。比如,我们发现,仅调整apache mpm模块参数,服务器建立tcp连接的数目会大幅提升,吞吐量增大,但tcp建立连接所消耗的时间却比较长。在使用大量动态网页访问使服务器过载的情况下,tcp连接平均建立时间达10秒钟左右,这对用户来说是不能接受的。比如,假设一个高考查分网站的访问峰值会使服务器的cpu达到极限,刚好它采用的是linux+apache,如果没有进行更进一步的优化配置,那么,它能够响应学生的查分请求,只不过查分者要有足够的耐心。windows+iis就不是这样,在cpu利用率接近100%时,它会拒绝大量用户的tcp连接请求,而建立起来的连接耗时比较短。这更符合实际情况。在宽带普及、计算机速度更快的今天,人们上网已不再适应长时间的等待,毕竟不是电话线拨号上网的年代了,响应慢等于没响应,用户一般会做出reload这样的动作来。

linux+apache当然也能适应这种需求,只不过没有现成的方案,拿过来就能让多数人满意。我们做了一个小测试,以对比2个平台下实现web应用的性能。我们使用一台内存2g的双至强服务器分别安装了windows 2000+iis5和redhat linux 9.0+apache 2.0.48,使用测试仪模拟6000用户同时访问服务器上的一个大小为1k的静态页。windows平台上没有针对性能做任何设置,linux平台上apache采用缺省安装,除了配置mpm模块的参数外,也没有对编译安装时模块的选择做出调整。测试中,我们将测试仪的tcp连接重传次数缩小,藉此将apache的响应时间控制在合理范围内。测试的结果如左表所示。

linux+apache组合在互联网上是如此流行,不难推断出,它可以满足用户的需求,只是它没有像windows+iis那样给用户提供了一个无需调整就可以获得很高性能的方案。

windows linux
建立的tcp连接总数(个) 362392 299737
接收到的http成功响应(个/秒) 13280 10915
吞吐量(bps) 9840367 8710108
响应延迟 tcp连接时间(ms) 192 400
http ttlb (ms) 125 320
http交易成功比例(success/request) 99.517% 99.7659%