2016-08-17 9 views
0

私はnode.jsを試していて、スループットに関する奇妙な問題に直面しています。基本的に、私は(Ubuntuの16.04とNode.jsのV6.3.1を実行し、4ギガバイトの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サーバを起動し、私は、負荷テストをするためにそれを別のマシンからApacheのベンチを使用しようとしている:

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

しかし、どんなにどのような要求の数&同時実行(N/C値)私がテストすると、ベンチマークの結果は、「1秒あたりのリクエスト数」が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

運がよかったです。 'cluster'(4人の労働者)の同じ結果。 – Nick

+0

専用サーバーを試してください。 – Amit

答えて

1

問題はWindows 8.1(最初に試した負荷テストマシン)で、tcp接続を制限していたため、Apache Bench(ab)並行性に影響していました。別のUbuntuマシンでは、うまく動作し、スループットの結果がはるかに優れています。

0

常にエラーが外部変数によって引き起こされていないことを確認してください。常に最も近いものから最も近いものに移動してください。ベンチマークツールリソースは、ソフトウェアではないにしてもテストされたサーバーと、ハードウェアでは少なくとも確実であるため、テスト対象のサーバーと同じマシンでベンチマークを実行することはできません。仮想化でさえ。

NodeJSで幸運を祈る!

関連する問題