写在前面:
由于对python语言的热爱加上现在接触到node.js,对其非阻塞异步编程模型非常感兴趣,加之网络上面对两者作web应用性能的测试很少,故在此对两者的性能做个简单的测试。由于python原生是不支持非阻塞异步编程的,故这里对python采用了tornado以支持非阻塞异步编程。
测试环境介绍:
网络环境:localhost
服务器系统:Fedora 15
服务器配置:AMD Athlon II X 4 640
内存:8GB
测试工具:apache 2.2.19自带的ab测试工具
单进程web服务器测试:
该测试基于空逻辑,服务器只返回一段文本‘hello,world’,测试结果如下表:
|
|
1000c/30s |
1000c/30s |
platform |
node.js |
python with tornado |
rps |
4771 |
1564 |
tpr |
209ms |
639ms |
80%req |
68ms |
212 |
说明:
1000c/30s:并发1000,压测30秒
rps:没秒处理的请求数
tpr:处理每个请求所花的平均时间
80%req: 80%的请求在多少时间内完成
由上图可以看出虽然都是非阻塞I/O,但是node.js的效率几乎是python在tornado框架下的三倍,python的落败让我很伤心。
多进程web服务器测试:
在node.js中通过引入cluster实现多核处理器开启多个进程,监听同一端口,在python中的tornado框架下通过引入HTTPServer,使用其多进程的特性,服务器依然只返回‘hello,world’,测试结果如下表:
|
|
1000c/30s
|
1000c/30s
|
platform |
node.js |
python with tornado |
rps
|
13532
|
5025
|
tpr
|
74ms
|
198ms
|
80%req
|
47ms
|
94ms |
本文通过实验证明在相同环境下,Node.js在非阻塞异步编程方面相较于使用Tornado框架的Python表现更优,尤其是在并发处理能力上。多进程测试进一步凸显了Node.js在多核心利用上的高效性,其性能几乎是Python的三倍。
768

被折叠的 条评论
为什么被折叠?



