1

Tomcat Servlet Container 5.5 を搭載した JBoss 4.0.4 GA を使用しています。また、IIS 6.0 をこの JBoss にリダイレクトしています。(IIS で ISAPI フィルタとして使用される IIS tomcat コネクタ経由)。すべてが正常に機能しており、説明どおりにワーカーを構成しました。

コネクタの worker.properties ファイルの一部を次に示します。

#
# Defining a worker named ajp13 and of type ajp13
# Note that the name and the type do not have to match.
#
worker.jboss0_ajp13.port=8009
worker.jboss0_ajp13.type=ajp13
worker.jboss0_ajp13.host=localhost
worker.jboss0_ajp13.socket_keepalive=1
worker.jboss0_ajp13.socket_timeout=300

ただし、IIS (ポート 80) 経由でアプリケーションに接続する場合、HTTP 要求に対する HTTP 応答が完了するたびに、ソケットが閉じられます (TCP 層で FIN が送信されます)。アプリケーションは WAN 経由で動作しているため、これにより深刻な速度低下が発生します。(閉じたソケットごとに、別のソケットを確立する必要があり、これには 500 ミリ秒かかります)。

これは、JBoss Web サーバーに直接接続している場合には発生せず、IIS の同じ WebServer インスタンス上の別の仮想ディレクトリに接続している場合にも発生しません (つまり、IIS の Keep-Alive も構成されています)。

これは、Tomcat IIS コネクタの最新バージョンで発生します。

コネクタにバグがあるのか​​、それとも私の設定に問題があるのか​​ わかりますか?

前もってありがとう、
ヘンリー。

4

2 に答える 2

1

Tomcat IIS リダイレクタの Bugzilla にバグを報告しました。これが私が得た回答です。

1.2.27 までは、これが IIS コネクタの動作でした (IIS は、すべての ISAPI 拡張機能に独自の HTTP キープアライブを実装するように強制しますが、IIS コネクタはこれを行いませんでした)。

1.2.27 では、永続的な接続を許可する HTTP 1.1 チャンク エンコーディングの実験的なビルド時のサポートがあります。(私は本番システムでほぼ同じコードを約 4 年間使用してきましたが、しばらく安定するまでは JK コードベースで実験的なものと見なす必要があります)。

ダウンロード ミラーの 1 つから -chunked バイナリを取得し、1.2.27 リリース ノートでチャンク エンコーディングを構成する方法について読んでください (適切なビルドを取得し、構成で有効にする必要があります)。コネクタがデバッグ ログをオンにしてチャンク エンコーディングを使用していることを確認できます。TCP/Wireshark トレースは、接続が再利用されていることを示しているはずです。

それでも接続が閉じられ、コネクタがチャンク エンコーディングを試行している (または試行する必要がある) ことがログに示されている場合は、ユーザー リストで話し合い、別の Wireshark トレース + コネクタ デバッグ ログで再度開くことをお勧めします。問題があることを確認してください。

だから、私がしたこと:

  1. チャンキングをサポートする isapi_redirect.dll を配置します。
  2. isapi_redirect.properties を次のように構成しました。

    enable_chunked_encoding=1

  3. IIS を再起動しました。

于 2009-01-29T12:38:37.853 に答える
0

ソケットはおそらくIISによって閉じられています。JBossとIISの間の接続は、HTTPソケットが永続化されているかどうかとは無関係である必要があります。IISが永続的なHTTP/1.1ソケットをサポートするように構成されていることを確認します。

ただし、IISの別の仮想ディレクトリには同じ問題がないことを指摘しました。問題が発生している特定の仮想ディレクトリに問題がある可能性があります。ただし、 IIS/Tomcatコネクタにある可能性もあります。

IIS / Tomcatコネクタかどうかを調べるには、設定してみてください

worker.jboss0_ajp13.connection_pool_size = 10 worker.jboss0_ajp13.connection_pool_timeout = 600

それがまったく違いを生むかどうかを確認します。Tomcatワーカードキュメント(下部の「サンプルworker.properties」のセクションを含む)を参照してください。そこに記載されているパラメータのいずれかが役立つかどうかを確認してください。

于 2009-01-27T16:27:06.367 に答える