2012-02-19 29 views
2

私はNode.jsのワークロードテストを行っていますが、面白い動作があります。 HTTPサーバの最小応答時間は、最も単純なロジックのために、200ミリ秒です:Node.js応答時間> = 200ms?

var http = require("http"); 

http.createServer(function(request, response) { 

    response.write("Hello World"); 
    response.end(); 

}).listen(8080); 

は、Windows Server 2003上の蘭:

> node main.js 

私は、Webを検索するが、これについての情報を発見していません。テストはローカルネットワーク上で実行され、さらに他のWebサーバー(つまりIIS)を使用して即時応答時間を達成できます。私は間違っていない、私はこの動作の背後に合理的な説明を参照してください、これは私の質問です:

これはデフォルトの動作はnode.jsで来る、またはそれは何かの結果かもしれない?オンデマンドで

明確化:

  • ノードjsのバージョン:0.6.11
  • OS:のWindows Server 2003 R2 SP2
  • Server環境:VMWareのワークステーション8.0.0
  • ワークロード・ユーティリティ: jMeter 2.6(1スレッド負荷)

更新

遅延動作はリモート要求中にのみ表示されます。ローカルワークロードテストを実行すると、レイテンシはゼロに近づきます。ただし、同じサーバー上のIISに対するリモート要求がレイテンシを提供しないため、ネットワークレイテンシの問題にはなりません。私はこれを他のOSで試してみるつもりです。

+2

をなし、それは私が期待するものではありません。あなたはどのようにリクエスト時間を測定しますか? 'ab'の結果があなたに与える結果は?どのノードのバージョンを使用していますか? –

+0

@AndreySidorov私は質問を更新しました – tamasf

答えて

3

WindowsではデフォルトでNagleアルゴリズムが設定されています(AzureのWindows 2008 R2でも再現可能)。

回避策 - このように、応答ソケット上でそれを無効にします。

response.connection.setNoDelay(true); 
1

私はUbuntu 64bitとノードバージョン0.6.10を実行していますが、たいていは20msの遅延があります。私はそれはWindowsの問題は、ノードはまだWindows上で完璧ではないので、いくつかのより多くの安定性を待つ必要があると信じています。あなたの問題をメーリングリストに投稿することをお勧めします。

+2

ノードはかなり安定していて、彼のネットワーク/ハードウェアに問題がある可能性があります。 – Raynos

2

5msのレイテンシを得るには、3msをダウンロードして合計8msをここで取得します。 それは様々ですが、私が見た最高のものは合計約14msです。

OS X 10.7.3で動作します。私はWindowsで試してみる必要があります。

+0

Windows Server 2008 R2でも試しましたが、追加レイテンシは発生しませんでしたこれはプラットフォーム固有の問題だと思われます。 – tamasf