Node.js HTTPSサーバに送信するPOSTまたはPUTリクエストの約10%が応答を得るのに2分かかります。残りの90%は期待どおりに動作します。ランダムPOSTまたはPUTリクエストで2分のレイテンシ
私はtsharkによって要求の本体がサーバーによって受信されたが、ServerRequestオブジェクトの 'data'イベントと 'end'イベントをトリガーするのに2分かかることを確認しました。
このレイテンシを経験する要求はランダムであるように見えますが、発生したときにパケットを受信するまでの待ち時間と「データ」および「終了」イベントは常に正確に2分です。
これらのリクエストのすべてについて、私は単一のパケットに到着する小さなjsonオブジェクトをポストしています。待ち時間が発生しているリクエストについては、セッションCookieがすぐに解析されるため、ヘッダーがアプリケーションによって受信されることがわかります。セッションの認証後、2分後に 'data'と 'end'イベントが最後に出力されるまで何も起こりません。その時刻にボディが解析され、データベースに保存されます。
これは、私のノードアプリケーションや、Amazon Linuxを実行しているEC2の小規模なインスタンスである自分のサーバーに問題がある可能性がありますか?リクエストの本文を含むパケットが到着してからアプリケーションにチャンクとして渡されるまでに2分かかりますか?
ありがとうございました。
更新: lib/http.jsのparser.onBodyを 'b'に変更するように変更しました。このメソッドが2分遅れて終了するまで呼び出されていないことがわかります。これは問題が私のアプリケーションよりも低いレベルにあることを示しているようです。私もec2のインスタンスを変更しましたが、それは助けになりませんでした。
一貫して2分ですか?これらの要求に対してどれだけの作業が行われていますか?ガベージコレクションに関係することがありますか? http://stackoverflow.com/questions/5603011/node-js-and-v8-garbage-collection –
はい、毎回正確に2分です。ほとんど動作しません - 私は解析されたURLを添付し、セッションクッキーを解析し、セッションオブジェクトをredisから接続します。私はそれのいずれかの遅延を見たことがない。私はそれがガベージコレクションではないと思います。なぜなら、私は普通のように他の投稿要求を受け取り続けることができます。 –