2016-08-17 3 views
0

node.js를 실험 중이며 처리량과 관련하여 이상한 문제가 있습니다. 기본적으로, 나는 (우분투 16.04 및 Node.js를 V6.3.1을 실행하는 4GB의 RAM 및 4 개의 vCPU와 VM에) 간단한 HTTP 서버를 만들려면이 코드를 가지고 : 나는에 node server.js 그것을 실행하는거야node.js의 처리량을 늘리십시오. http 서버

const http = require('http'); 
http.createServer((req, res) => { 
    res.writeHead(200, { 'Content-Type': 'text/plain' }); 
    res.end('Hello'); 
}).listen(8888); 

HTTP 서버를 시작하고 난로드 테스트를하는 데 다른 시스템에서 아파치 벤치를 사용하려고 해요 :

ab -l -r -n 100 -c 50 -k http://server-ip:8888/

그러나 상관없이 요청의 수 & 동시성 (N/C 값) 벤치 마크 결과는 초당 요청 수가 초당 5 초 미만임을 보여 주며 너무 낮습니다. 위와 같이 node.js와 간단한 HTTP 서버와 같은 확장 가능한 프레임 워크의 경우.

그래서 구성, 설정 등과 관련이 있다고 가정합니다.이 경우 처리량을 늘리는 방법에 대한 아이디어가 누구에게 있습니까?!

업데이트 : 나는 거의 동일한 기본 코드는 클라우드 가상 머신에서 실행되는 높은 처리량을 받고있는 사람들을 건너했습니다

http://zgadzaj.com/benchmarking-nodejs-basic-performance-tests-against-apache-php

https://www.jayway.com/2015/04/13/600k-concurrent-websocket-connections-on-aws-using-node-js/

http://blog.yld.io/2016/02/08/squeeze-the-juice-out-of-node/

http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/

+1

클러스터를 사용하여 더 많은 코어를 활용하십시오. – Amit

+0

행운이 없습니다. 'cluster' (4 명 중)의 결과. – Nick

+0

다음 전용 서버를 사용해보십시오. – Amit

답변

1

문제는 Windows 8.1 (처음 시도한 부하 테스트 머신)이므로 TCP 연결을 제한하여 Apache Bench (ab) 동시성에 영향을 미칩니다. 다른 우분투 컴퓨터에서는 잘 작동하고 처리량 결과가 훨씬 좋습니다.

0

오류가 외부 변수로 인해 발생하지 않았는지 항상 확인하십시오. 항상 가장 멀리있는 것으로 이동하십시오. 벤치 마크 도구 리소스는 하드웨어가 아닌 소프트웨어가 아닌 경우 테스트를 거친 서버와 합쳐지기 때문에 서버 테스트와 동일한 시스템에서 벤치 마크를 실행할 수 없습니다. 심지어 가상화.

NodeJS와 함께 행운을 빕니다!

관련 문제