2007年11月26日

6种流行的WEB框架性能测试

作者 非鱼

原文地址:http://www.alrond.com/en/2007/jan/25/performance-test-of-6-leading-frameworks/

原文对六种流行的WEB开发框架进行了简单的性能测试,分别是:
CodeIgniter on PHP
Catalyst on Perl
Django on Python
Django on Python with Psyco
RubyOnRails on Ruby
Symfony on PHP
TurboGears on Python

比较的标准首先是大流量下的稳定性,其次是性能。测试的方法很简单,页面只输出一个Hello world字符串,不涉及任何数据库操作,否则整个网站的性能就会因为数据库的影响而趋向于集中。

测试用的硬件和系统:
CPU: AMD OpteronT Processor 146 (2 GHz)
Memory: 2 GB
OS: Debian 3.1 (Linux 2.6.14)
Web-Server: nginx/0.5.5

测试软件:
Siege 2.65 http://www.joedog.org/JoeDog/Siege
Http_load 12.03.2006 http://www.acme.com/software/http_load/
ab 2.0.41-dev Rev: 1.141

这套硬件和软件系统应该说还是相当有代表性的,所以其结果很值得参考。具体的测试参数和测试细节还有结果的详细数字和图标可以到原文链接去看,这里只讲一下最终的结果。

第一名:Django 占用CPU最少,性能超过第二名好几倍,使用threaded模式比prefork模式要快15%左右,(在一个中国的作者的测试情况下,threaded模式比prefork模式快近十倍),但是在高负载的情况下,threaded模式会死掉,而且无法自动重启,必须手工重启WEB服务器,这对于生产环境服务器是不可接受的。另外,使用Psyco来加速的话,两种方式下速度都可以提高20%左右,但是内存占用量会增加1-3倍,如果硬件资源没问题,就可以考虑这种方式。

第二名和第三名分别是TurboGears和RoR 1.1.6,它们速度差不多,但是不同负载量下的表现不同。
RoR 1.2.1的速度比1.1.6要慢2-4倍,而且在高负载下CPU占用也大一倍。

PHP的框架速度是最慢的,比Django慢了35倍。但是在加载了eAccelerator加速器以后速度有大幅提升,只比Django慢两倍了。

作者后来又做了一次额外测试,增加了几个新兴的框架,但是最终结果并没有变,还是证明Django是最佳选择。而且,Python非常容易上手。另外,同样基于Python的框架Pylons也不错。