web-dev-qa-db-ja.com

「リクエストがタイムアウトしました」の診断HttpExceptions

ここStackOverflowでは、毎日いくつかの「リクエストがタイムアウトしました」という例外が発生しています。

事実:

  • リクエストのタイムアウトはデフォルトの90秒です
  • POSTでのみ発生します
  • 投稿されるデータはテキストで、通常は小さい(<1KB)ですが、数KBの範囲になる場合があります
  • フォームデータはサーバー変数にキャプチャされません
  • クライアントUAは多様です:IE5.5-7、Firefox 3.0.5、iPhone、Chrome
  • クライアントの場所は多様です:英国、フランス、米国-NC、OH、NE、IN

サーバーベースのタイムアウトをテストし(つまり、Thread.Sleepを使用)、すべてのフォーム変数が正しくキャプチャされます例外ログで-これにより、クライアントがリクエストの送信で問題を抱えていると考えられます。割り当てられた時間。

この状態をトラップ/デバッグする方法についての考えは大歓迎です!

25
Jarrod Dixon

小さなAJAX Webサービスを使用する本番サーバーでも同じ問題が発生します。ファイアウォールの外側でパケットキャプチャを実行した後、POST toサービスは2つのTCPセグメントで提供され、2番目のセグメントは到達しませんでした。(最初のパケットにはヘッダーのみが含まれ、2番目に欠落しているパケットはjson本体である必要があります)したがって、基本的にIISは、POSTの残りを待っているだけです。設定されたタイムアウトの後、サーバーはRSTパケットをクライアントに送信し、「Requesttimeout」エラーをログに記録します。これは正しい動作です。

私たちはあまり運がなくてもクライアントの再現を試みていますが、私たちの場合、これは完全にネットワークに関連しているようです(または投稿の内容が気に入らない「セキュリティ」ソフトウェア)。

12
Barry Hagan

IIS 7を実行している場合は、 Failed Request Tracing を使用できます。実際にはタイムアウトに使用していません。ほとんどの場合、特定のキャプチャだけをキャプチャするように設定しています。 httpエラーコード。ただし、X時間以上かかるリクエストのトレースをダンプすることができます。

9
Phil Scott

この記事では、windbgを使用してこれをキャッチする方法について説明します。

http://blogs.msdn.com/b/asiatech/archive/2012/06/21/how-to-troubleshoot-httpexception-request-timed-out-asp-net-4-0-64- bit.aspx

3
jlo

Telnet経由で手動で投稿しようとしましたが、POSTを完了していません。あなたが見ている振る舞いを再現できるかどうか興味があります。サイトの性質を考えると、システムをハッキングしようとして意図的にいくつかの不正な形式のPOSTを受け取っていても、私は驚かないでしょう。

いくつかのアクションがハングした後、SOを再び動作させるために、Safariを再起動する必要があることに時々気づきましたが、それが私の問題であると思いました。

3
tvanfosson

私たちは非常にトラフィックの多いWebクライアントでそれらをよく見ていました-それが関連しているかどうか疑問に思います。おそらく起こっていたのは、HttpWebRequest(HttpWebResponseで問題が発生していると思いますか?同じ問題がある可能性があります)は、要求が同期している場合でも、カバーの下にあるジャンキーなスレッドプールを使用しますスタックの上位にある他の.NETオブジェクトが同じシステムスレッドプールを使用していて、一方が他方を枯渇させ、最終的にタイムアウトが発生するため、時々何かがデッドロックします。この問題はここでよりよく説明されていると思います: http://www.deez.info/sengelha/2005/03/03/beware-threadpools-and-httpwebrequest/

2
John

また、ログ内のIPアドレスをスキャンして、同じ人が繰り返し問題を抱えているかどうかを確認します。ご存知のとおり、まだダイヤルアップアカウントを使用している人がいるか、他のネットワークの問題が発生している可能性があります。しかし、もちろん、できるだけ調査せずにそれを書き留めないでください。

1
tsimon

IIS6からIIS7に切り替えた後、Webサーバーで同じ「リクエストタイムアウト」の問題が発生しています。この問題はIIS7固有のものだと思います。私の推測では、これらのエラーは、要求が処理のためにASP.Netに渡される前に、IIS6の処理チェーンのさらに上流で飲み込まれたか無視されたと思います。今日、Failed Request Tracingをオンにして、問題に関する情報をさらにトラップできるかどうかを確認します。これまでのところ、クライアント側の原因の説明が最も有効であるように思われます。

0
Ian