2016-05-31 7 views
0

私は、Webサーバーが高価なスレッド作成操作を犠牲にするためにスレッドプールを使用していることを知っています。私の質問は、スレッドプールは、同じWebサーバー上に展開された異なるモジュールの共有ですか?スレッドはWebモジュール間で共有されていますか?

特に、2つのWebモジュールが導入されています。 1つのモジュールでのみ定義されたフィルタは、スレッドローカル変数を設定します(決してそれを設定解除しません)。それは同じスレッドがそこで再利用された結果、別のWebモジュールでスレッドローカルにも見えるでしょうか?

おかげ

答えて

1

私は、すべてのサーバについてはよく分からないですが、Tomcatの場合には、スレッドプールは、特定のポートに設定されています。したがって、モジュールが異なるポートの下に配備されている場合、それぞれのモジュールは個別のスレッドプールを持ちます。したがって、threadLocalは指定されたモジュールでのみ表示されます。

Tomcatの設定から抽出されたサンプル。私は他のサーバーが同様のアプローチを使用していると推測しています。頻繁にウェブサーバ技術に依存

enter image description here

+0

ありがとうございました。ちょうど実験でそれをローカルでも確認しました(使用中のTomcat) – d56

1

たとえば、Node.jsはすべてのモジュールを独自のプロセスで実行します。すべてのプロセスは、サーバモジュールのJavaScriptコードを実行する単一のスレッドと、他のノードランタイムlibuvのスレッドプール内のスレッドを、非同期で処理するスレッドプールにします。すべてのモジュールは独自のプロセスで実行されるため、他のモジュールと共有されない独自のスレッドプールを持つことになります。異なるプロセスが同じスレッドプールを共有することはできません。

いろいろなWebモジュールが何らかの形で同じプロセス内で実行されている場合、理論的には同じスレッドプールを共有することができますが、WebサーバーがそれぞれのWebモジュールを独自のプロセスで実行すると、同じスレッドプールを共有することは不可能です。

関連する問題