早就听说V8的威力了,由于一直在用tornado做项目,今天特意拿tornado和node.js来做个简单的对比压力测试。结果是node.js胜出。
硬件: 普通pc机 双核 内存2g
OS: ubuntu 10.04
先说一下node.js的安装:
wget -c http://nodejs.org/dist/node-v0.3.1.tar.gz
# ./configure
# make
# make install
如果需要ssl, 则先apt-get install libssl-dev
启动基于node.js的web server
脚本web.js如下:
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello bobning\n'); }).listen(8124, "127.0.0.1"); console.log('Server running at http://127.0.0.1:8124/');
# node web.js
Server running at http://127.0.0.1:8124/
启动基于tornado的web server
tornado就更简单了,在demos下有个helloworld项目,默认端口为8888
# ./helloworld.py --logging=error #注意把log关闭,否则影响测试结果
测试开始:
# ab -c10 -n1000 http://127.0.0.1:8124/ #node.js
Concurrency Level: 10
Time taken for tests: 0.208 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 76000 bytes
HTML transferred: 12000 bytes
Requests per second: 4796.92 [#/sec] (mean)
Time per request: 2.085 [ms] (mean)
Time per request: 0.208 [ms] (mean, across all concurrent requests)
Transfer rate: 356.02 [Kbytes/sec] received
# ab -c10 -n1000 http://127.0.0.1:8888/ #tornado
Concurrency Level: 10
Time taken for tests: 0.509 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 168000 bytes
HTML transferred: 12000 bytes
Requests per second: 1963.95 [#/sec] (mean)
Time per request: 5.092 [ms] (mean)
Time per request: 0.509 [ms] (mean, across all concurrent requests)
Transfer rate: 322.21 [Kbytes/sec] received
猛一点:
# ab -c1000 -n20000 http://127.0.0.1:8124/ #node.js
Concurrency Level: 1000
Time taken for tests: 2.629 seconds
Complete requests: 20000
Failed requests: 0
Write errors: 0
Total transferred: 1520000 bytes
HTML transferred: 240000 bytes
Requests per second: 7606.23 [#/sec] (mean)
Time per request: 131.471 [ms] (mean)
Time per request: 0.131 [ms] (mean, across all concurrent requests)
Transfer rate: 564.52 [Kbytes/sec] received
# ab -c1000 -n20000 http://127.0.0.1:8888/ #tornado
Concurrency Level: 1000
Time taken for tests: 10.605 seconds
Complete requests: 20000
Failed requests: 0
Write errors: 0
Total transferred: 3360000 bytes
HTML transferred: 240000 bytes
Requests per second: 1885.98 [#/sec] (mean)
Time per request: 530.228 [ms] (mean)
Time per request: 0.530 [ms] (mean, across all concurrent requests)
Transfer rate: 309.42 [Kbytes/sec] received