node.js速度大評測

6 / 20, 2013 node.js , 伺服器

可能你會覺得本站的文章自從上個月起多了一些文章關於node.js。你可能覺得我好像把它說得非常神奇,做什麼都可以。可是,你有沒有對node.js的速度感到興趣呢?這篇文章就是對node.js的速度進行大測試啊!快開始啦!

(如果你想在自己的電腦上進行測試,請先安裝node.js。)

這次我們的測試會用node.js的負載器來進行負載測試。首先,我們要預備一個node.js的伺服器來進行測試。這裡是node.js伺服器的代碼:

server.js
var http = require('http');
var fs = require('fs');

var server = http.createServer(function(req,res){
	fs.readFile(__dirname+'/index.html',function(e,data){
		if(!e){
			res.end(data);
		}
		else {
			res.end();
		}
	});
});
server.listen(8000);

我們也要弄一個主頁來給伺服器。

index.html
 <h1>This is a test</h1>

現在,我們就要一個node.js的負載器。我們會用ApacheBench來測試負載。這是測試結果:

ab -c 1000 -n 10000 http://127.0.0.1:8000/
Concurrency Level: 1000
Time taken for tests: 7.018 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 980000 bytes
HTML transferred: 230000 bytes
Requests per second: 1424.83 [#/sec] (mean)
Time per request: 701.840 [ms] (mean)
Time per request: 0.702 [ms] (mean, across all concurrent requests)
Transfer rate: 136.36 [Kbytes/sec] received

接著我們就會進行一個更為艱辛的測試:把http要求和同步連線數目增加。(這次我的電腦糟糕了……)

ab -c 1000 -n 1000000 http://127.0.0.1:8000/
Concurrency Level:      1000
Time taken for tests:   1031.621 seconds
Complete requests:      1000000
Failed requests:        0
Write errors:           0
Total transferred:      98000000 bytes
HTML transferred:       23000000 bytes
Requests per second:    969.35 [#/sec] (mean)
Time per request:       1031.621 [ms] (mean)
Time per request:       1.032 [ms] (mean, across all concurrent requests)
Transfer rate:          92.77 [Kbytes/sec] received

從這些結果中,我們可以看見node.js的效能很好。一個node.js程序可以在一秒內輕鬆應付一千多個HTTP請求,還要沒有錯誤。對於大型網絡應用程式,node.js是一個非常合適的平台。來一起看看我們平時用的Apache伺服器的效能是怎樣的:

ab -c 100 -n 10000 http://127.0.0.1:8080/
Concurrency Level:      100
Time taken for tests:   38.898 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      19150000 bytes
HTML transferred:       15530000 bytes
Requests per second:    257.08 [#/sec] (mean)
Time per request:       388.982 [ms] (mean)
Time per request:       3.890 [ms] (mean, across all concurrent requests)
Transfer rate:          480.77 [Kbytes/sec] received

不知發生了什麼事,我怎樣測試都不能連線到在我電腦的Apache伺服器,所以不能給你效能資訊。我不能使用和node.js相同的設定來做負載測試,否則就會失敗,況且效能實在差太遠了。(我是一個對Apache伺服器非常過敏的程式員來的。)總括而言,node.js是一個非常快的東西,非常適合拿來當HTTP伺服器啊!如果你還沒學node.js,那就趕快去學吧!它的速度真的是非常的吸引啊!