2011-06-30 14 views
0

同じTomcat内の2つのサーブレットと同じホスト上の2つの別々のTomcat間の処理時間に大きな違いがあることに気付きました。サーブレットはhttpを使用して通信します。 tomcatまたはjavaには、同じtomcatまたはJVMの中でhttp通信を最適化するメカニズムがあります。私は、この観察が私が走っているホストに関連していないことを確認しようとしています。tomcatでの処理

+0

この検索結果を共有できますか? –

+1

知るべき十分な情報の近くにはありません。 –

+0

これはどのオペレーティングシステムですか?別のJVMシナリオでは、ループバックアドレスまたは実際のインターフェイスを使用していますか? (これはおそらく問題ではありませんが、あなたがそれをしている間はテストする価値があります)。コンテキストスイッチの違いや、2つのリソースと競合するのではなく、ただ1つのJVMを持つ効率を考えようとしています。あなたの作業負荷に多くの。 – Szocske

答えて

1

ブロッキングI/Oと非ブロッキングI/Oの違いがあります。

Tomcatはマルチスレッドモデルを使用します。要求を処理するためのスレッドプールと着信要求のキューがあります。サーバーは、処理のために着信要求にスレッドを割り当て、タスクを実行し、応答を返送し、そのスレッドをプールに戻します。キューは、バックアップする要求を処理します。

Nettyによって採用されているノンブロッキングIOは、異なるものです。

おそらく、2つの要求が同じTomcatで処理されるときにキューに入れられている可能性があります。

0

これらのテストについてさらに詳しい情報があります。両方のテストは、Apache Tomcatバージョン6.0.20およびjdk1.6.0_23を使用してSunOS 5.10で実行されます。 http転送にはかなり大きなファイルが含まれます - 5M。スレッドの処理は説明できますが、タイミングの差が10倍以上になると、JVMからデータを転送する必要がないと思われます。ブロッキング対ノンブロッキングのいくつかの形態は、タイミング差に合うかもしれない。