2016-04-14 10 views
0

requestパッケージで同時にリクエストをいくつ行うことができますか? リクエストを受信して​​正常に処理されたことを確認するたびに、すべてのリクエストからデータが返されることを期待しています。このハードウェアまたはOSはOSに依存していますか?どこから探し始めますか?ノードjsにあります。 「リクエスト」パッケージを使用して同時に送信できるリクエスト数

+0

すべてのリクエストは同じホストに送信されますか?そして、あなたは一度にどれくらい多くを送りますか?そして、どんな結果が得られていますか?この質問は少し理論的です。特定の状況をより直接的に解決できるように、具体的な詳細を記入してください。 – jfriend00

+0

これは何を意味していますか?***要求が成功裏に完了したことを確認して、すべての要求からデータが返ってくることを期待しています。このハードウェアまたはOSに依存していますか?***送信するリクエストは何らかの応答を得るか、ホストに接続できないというエラーを返す必要があります。それは決してOSに依存しません。サーバーに接続する際に何らかのエラーが発生するか、独自のコードが何らかのエラーを無視しない限り、サーバーからの応答が得られます。 – jfriend00

+0

リクエストはすべて同じホストに送信されます。私は数百万を同時に送って、それぞれの反応を処理したいので、私のプログラムが応答を「待つ」必要があります。私が何回作ることができ、待つことができるかには限界があります。 –

答えて

1

最近のバージョンのnode.jsでは、発信要求に制限が適用されていません(古いバージョンの場合)。文字通り同時に数百万の発信接続を作成しようとしていた場合は、おそらくOS特有のnode.jsサーバーの上限に達するでしょう。しかし、実際の制限は、ターゲットホストによって決定される可能性が高くなります。

すべてのリクエストが同じホストに送信されているため、要求を行うサーバーによって制限される可能性が高くなります。新しい接続の拒否を開始する前に、同時に複数の同時リクエストを同時に実行できる制限があります。その数は、サーバーの構成と構築方法によって異なります。 http://www.google.comの場合、巨大なサーバーファームを持ち、すべての要求が均等に分散されているため、数はおそらく数千または数百万の要求になります。シンプルなシングルCPUサーバの場合、その制限は明らかにそれよりもはるかに小さくなります。

さらに、とにかく一度にすべての作業を行うことができないため、単一のCPUサーバーに多数の要求を送信することはほとんどありません。

したがって、特定のターゲットホストに最適なものを知りたい場合は、調整可能なテストハーネスを設定して、 100、200、500、1000を一度に確認し、平均応答時間とエラーが発生した場所(ある場合)を確認します。

このタイプのテストを実行したくない場合は、完全に最適化しようとしない、合理的に安全な選択は、同時に5つ以上のリクエストを同時に行うことではありません。

一度に飛行中にN個のリクエストを管理するには、自分で何かを構築するか、それを行う既存のライブラリの1つを使用できます。 Bluebird約束ライブラリはPromise.map()のようないくつかの関数にはconcurrencyオプションがあります。これはあなたが設定した並行性の値のために自動的に行います。 async libraryにも同様のものがあります。一度に飛行しているどのように多くの要求を管理するために、またはそれのためのテストハーネスを構築するためのコードを作り上げ、より具体的な助けが必要な場合は、すべての要求のソースのために私達にあなたのコードの一部を示してください


そのことがどのように機能するか(何が巨大なリクエストであるか、URLのソースが何であるか)がわかります。

+0

@jimmyscray - これはあなたの質問に答えましたか? – jfriend00

+0

残念ながら、それはしませんでした。私はそこにいくつかの要因があることを知りました。 1つは「プール」接続のしきい値(これはアプリケーションレベルにあると思います)です。私のLinuxサーバには、接続できる量を制限するポート範囲もあります。最後に、私のスクリプトが割り当てることができるメモリの量が重要です。私はクライアントには同程度の要素があると理解していますが、クライアントに無限の接続があるという前提を設定しています –

+0

@JimmyScray - あなたの特定の状況に関する詳細はほとんど含まれていないので、 。あなたが知りたいこととあなたのローカル設定が何であるかについてより詳細な情報を含めると、より具体的な回答が得られます。たとえば、すべての接続が同じホストまたは別のホストに対して行われている場合は、違いが生じます。そしてもちろん、あなたが住んでいなければならないリソースの限界があります(メモリ、ソケットなど)。これはしばしば設定とOSに固有なので、特定の数値を与えることは不可能です。 – jfriend00

関連する問題