一部の 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 分のタイムアウトに関連しているかどうかはわかりません。