2016-08-17 88 views
0

我正在嘗試使用node.js並面臨吞吐量的一個奇怪問題。基本上,我有這樣的代碼來創建一個簡單的HTTP服務器(上4GB內存和4個vCPU虛擬機,運行Ubuntu 16.04和Node.js的v6.3.1):增加node.js http服務器的吞吐量

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

我與node server.js運行它啓動HTTP服務器,然後我試圖使用Apache臺不同機器上進行負載測試:

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

然而,無論什麼請求數&併發(N/C值)我測試一下,基準測試結果總是顯示'每秒請求數'低於5 /秒,這太低了w代表像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

不幸。 「集羣」(4名工人)的結果相同。 – Nick

+0

然後嘗試專用服務器。 – Amit

回答

1

問題是Windows 8.1(我首先嚐試加載測試機器)限制了tcp連接,從而影響了Apache Bench(ab)併發性。在不同的Ubuntu機器上,它工作正常,吞吐量結果要好得多。

0

總是試圖確認錯誤不是由外部變量引起的,總是從最遠到最近。並且請注意,不能在與測試服務器相同的機器上運行基準測試,因爲如果不使用軟件,您的基準測試工具資源將與經過測試的服務器相同,至少在硬件上是肯定的。即使是虛擬化。

與NodeJS祝你好運!