[解決済み] TomcatにおけるNIOとBIOの根本的な違いは何ですか?
2022-01-30 21:07:11
質問
TomcatでNIOコネクタを設定した場合、N個のプーラースレッドとM個のワーカスレッドがあります。
BIOコネクタを設定すると、スレッドプールにN*M個のスレッドを持つことができます。では、2つのコネクタの違いは何でしょうか?
解決方法は?
BIO では、各新規接続に Connector スレッド プールからスレッドが割り当てられ、そのスレッドは接続が閉じるまでその接続に割り当てられたままとなります。つまり、スレッドはリクエストの間(つまり HTTP キープアライブの間)、長時間アイドル状態です。
NIOでは、新しい接続はすべてPollerに渡されます。Pollerのスレッドは、処理すべきデータが接続されたときに通知されます。Poller は Connector スレッドプールから接続にスレッドを割り当て、そのスレッドはすべてのデータの読み取り/書き込みが完了するまで、その接続に割り当てられたままになります。その後、接続は Poller に戻され、Poller はさらにデータを監視できるようになります。
要するに、これによってNIOはよりスケーラブルになったということです。BIOでは、接続ごとにスレッドプールに1つのスレッドが必要です。NIOはBIOよりも多くの接続を維持することができ、同時に処理される各リクエストに対してスレッドプールに1つのスレッドを必要とするだけです。
関連
-
[解決済み] TomcatにおけるNIOとBIOの根本的な違いは何ですか?
-
[解決済み] ERROR: トランスポートエラー202: デバッグモードでTomcat 7を起動すると、バインドに失敗しました。
-
深刻:起動中に子コンテナが失敗した
-
NamingException: このクラスローダーにバインドされているネーミング・コンテキストがありません。
-
tomcat サーバーを起動するとエラーが発生する Context の初期化に失敗しました。
-
tomcat8 で X11GraphicsEnvironment の問題が発生し、クラス sun.awt.X11GraphicsEnvironment を初期化できない。
-
[解決済み] MaxMetaspaceSizeを設定した方が良いですか?
-
[解決済み] Tomcat、JBoss、Glassfishの違いは何ですか?
-
[解決済み] IntelliJとTomcat...変更したファイルがTomcatで自動認識されない
-
[解決済み] Java Web アプリケーションでアプリケーションサーバーの外側から静的データを提供する最も簡単な方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TOMCAT SSL Error: エイリアス名がキーエントリーを識別していない
-
[解決済み] tomcatで、catalina_homeとは何ですか、そしてなぜそれを使うのですか?
-
[解決済み] TomcatにおけるNIOとBIOの根本的な違いは何ですか?
-
[解決済み] org.apache.catalina.connector.ClientAbortException: java.io.IOException。APRエラー: -32
-
Server Tomcat v9.0 Server at localhost の起動に失敗しました。
-
解決方法について サーバ Tomcat v9.0 Server at localhost の起動に失敗しました。
-
Tomcat Connectorの実行モードがbioからnioに変更されました。
-
NamingException: このクラスローダーにバインドされているネーミング・コンテキストがありません。
-
tomcat サーバーを起動するとエラーが発生する Context の初期化に失敗しました。
-
[解決済み] Tomcatのポートを8080から80に変更するには?