私は、中間層への asmx Web サービス呼び出しを行う asp.net Web サイトがあるプロジェクトに取り組んでいます。中間層へのタイムアウトは 5 秒です。私たちが気づいたことの 1 つは、トラフィックのピーク時に、中間層を呼び出すときに http 400 が発生することがあるということです。
これらの http 400 リクエストの一部について、Web サイト層でネットワーク トレースを実行したところ、1) 3 方向の tcp ハンドシェイクが高速になること、2) ポストの実際の最初のパケットが 5 秒後まで開始されないことがわかりました。ポストの最初のパケットからの ack がすぐに返されます。 3) その後すぐに fin ack が送信され (おそらくタイムアウトが原因で)、その後 Web サービス層が http 400 ですぐに返されます (400 はポストとして理解できます)。不完全でした)
ステップ 3 の前に余分な 5 秒の遅延がある場合があります。ステップ 2 は、私には非常に奇妙な動作のように見えます。投稿が送信される前に、この遅延の原因となっているリソースの競合がある可能性はありますか? おそらく、別の方法で構成できるある種のリソースでしょうか?
リクエストを作成するために、標準の .net 非同期メソッドを使用しています (BeginInvoke)。投稿の本文は、API を呼び出す前に文字列として完全に利用できます。
CPU が高すぎて 2 より前に遅延が発生している可能性があると思います。この間、CPU が少なくとも 80% であることはわかっています。より高くなる可能性がありますが、パフォーマンス カウンターの解像度はそれほど高くありません。それをさらに確認するために、再現中に高解像度のパフォーマンス カウンターを取得しようとしています。他にアイデアがあれば教えてください!
ありがとう!