2

一部の AJAX POST リクエストの処理で断続的なタイムアウトが発生します。セットアップ: Apache 2.2.17 -> mod_jk 1.2.26 -> JBoss 4.3 CP01 (Tomcat 6.0 を使用)。アプリケーションは JSF 1.2_11、Seam 2.1、RichFaces 3.3.1 で構築されています。

これは通常、IE ブラウザー (7、8、9) で発生します。ブラウザーは ajax 要求を送信します (RichFaces はそのための JavaScript コードを生成します)。この HTTP POST リクエストは、mod_jk によって AJP ヘッダーとボディ パケットに変換され、Tomcat に送信されます。ヘッダー パッケージにはコンテンツの長さが 1760 であると記載されていますが、ボディ パケットには長さフィールドが 0 でコンテンツがありません。パケットは tcpdump でキャプチャされました。0 ajp body パケットは、問題のあるリクエストごとに発生するわけではありません。すべての ajax 要求/応答は小さく、最大 30K で、ファイルのアップロードや長い DB クエリはありません。

この段階で、mod_jk ログは、リクエストが 2 分で処理されたことを示しています。テスト環境では、2、3、4、および 6 分もかかりました。要求をラップするアプリケーション フィルターにも 2 分の時間が表示されます。フィルターは単純です - リクエストの前後にタイムスタンプを取得し、違いをログに記録します。

アプリの JSF フェーズ リスナーが呼び出され、各フェーズ (リクエスト、ビューの復元、検証、呼び出し、レンダリング) は、アプリでは通常 100 ミリ秒程度かかります。したがって、タイムアウトは、リクエストの開始時 (フィルタの後、最初の JSF フェーズの前) または終了時 (JSF のレンダリング フェーズの後、フィルタの終了前) の間に発生する必要があります。

mod_jk がクライアントによる読み取りタイムアウトを示すことがあります。クライアントは誰ですか - ブラウザ、Apache? DEBUG レベルでは、JBoss に記録される例外はありません。

誰かが似たようなものに出くわしましたか?mod_jk reply_timeout を設定しても問題は解決しません。JBoss に直接接続すると、約 30 秒のタイムアウトが発生します。これはこれまでに見たことのないものであり、2 分のタイムアウトに関連しているかどうかはわかりません。

4

2 に答える 2

0

同じ/類似の問題がありました。正確に 5 分であることがわかりました。Tomcat 6/Apache AJP/Richfaces 3.3.3 Final を使用していました。

Apache の httpd.conf を変更して、ある程度満足することができました。

タイムアウトが 5 分から 4 分に変更されたため、「タイムアウト」が 5 分から 4 分のタイムアウトに移動しました。

次に、httpd.conf の MaxKeepAliveRequests をデフォルトの 100 から 200 に変更したところ、「4 分間の一時停止」インシデントの数が大幅に減少しました。

編集:

KeepAliveTimeout は 10 秒から 40 秒に増加しました MaxKeepAliveRequests は 0 (無制限) に設定されました

これで問題は解決したようです。明らかに、これらの設定はサーバーへのトラフィックのタイプ/量に基づいて設定する必要がありますが、これは私たちにとってはうまくいっています.

于 2013-08-20T11:01:38.280 に答える
0

この問題は IE で発生しました: http://support.microsoft.com/kb/821814。KeepAliveTimeout が 3 秒に設定されていたため、サーバーからの応答がその境界に到達することがあり、応答ヘッダーが既に送信された後に Apache が接続を切断していました。

私たちにとっての解決策はデュアル インフラストラクチャでした。外部クライアントは SSO ログインを必要としないため、KeepAlive を取得しません。イントラネット クライアントは別の Apache サーバーに移動するようになりました (KeepAlive は vhost 固有ではなく、サーバー全体に適用されるため)。

于 2013-03-21T11:17:31.293 に答える