노드는 싱글 스레드로 이벤트 루프를 사용해 멀티스레드보다 동시 접속 시 좋은 성능을 낼 수 있다.
실제로 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초가 걸렸어야 한다.
참고자료
'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 |