Node.js

[node.js] HTTP 동시 접속 성능 테스트

behonestar 2015. 5. 5. 14:58

노드는 싱글 스레드로 이벤트 루프를 사용해 멀티스레드보다 동시 접속 시 좋은 성능을 낼 수 있다. 

실제로 node.js의 성능을 테스트해볼 수 있다.


웹서버 실행

클라이언트 요청 시 2초 후 응답이 완료되는 웹서버를 작성한 후 실행한다.

var server = require('http');


server.createServer(function(req, res) {

res.writeHead(200, {'Content-Type':'text/plain'});

setTimeout(function() {

res.end('World\n');

}, 2000);

reset.write('Hello\n');

}).listen(3000, 'localhost');


클라이언트 요청

아파치벤치를 이용하여 클라이언트에서 100 동시 접속으로 100개의 요청하도록 한다.

-c : 100개의 동시 접속

-n : 100개의 요청

$ ab -n 100 -c 100 http://127.0.0.1:3000/


...

Concurrency Level:    100

Time taken for tests:    2.034 seconds

Complete requests:    100

...


결과

100 동시 접속으로 100개의 요청이 완료되는데 총 2.034초가 걸렸다는 의미이다.

테스트된 요청은 2초가 걸리는 요청이므로 100개의 동시 접속을 처리하는 데 0.034초만 더 걸린 것이다.

이벤트 루프가 아니면서 싱글 스레드였다면 2초가 걸리는 요청을 100개 처리하기 위해 200초가 걸렸어야 한다.


참고자료

  1. NODE.JS 프로그래밍, 변정훈 지음


'Node.js' 카테고리의 다른 글

[node.js] HTTP Digest 인증  (0) 2015.05.09
[node.js] 이벤트  (0) 2015.05.05
[node.js] 특징  (0) 2015.05.05
[node.js] require() 그리고 module.exports  (0) 2015.05.05
[node.js] 시작하기  (0) 2015.04.20