1

通常、Tomcat ではスレッドが実行され、リクエストが来ると、リクエストを処理する責任をスレッド プールのスレッドに割り当てます。

スケーラビリティの観点から、そのメインスレッドがブロックされているか、ブロックされていないかは重要ですか?

4

2 に答える 2

2

ノンブロッキング IO には次の利点があります。

  • 高度なスケーラビリティ:クライアントごとに 1 つのスレッドを必要としないためです。より多くのクライアントを効果的にサポートできます。
  • 高キープアライブ :ブロック IO は、次のリクエストのキープアライブ時間までブロックする必要があります。ノンブロッキングは通知モデルであり、長いキープアライブ時間をサポートできます。
  • 高負荷時のパフォーマンスの向上: ブロック IO では接続ごとに 1 つのスレッドがあるため、n 接続に対して n スレッドが必要です。値 n が大きくなると、スレッド コンテキストの切り替えが増えるため、パフォーマンスが低下します。
于 2012-06-11T15:47:30.213 に答える
1

着信要求がtomcatで処理されると、スレッドプールからスレッドに接続が割り当てられます。

ここで重要なのは、スレッドをできるだけ速く実行することです。通常、このスレッドでは、ファイルio、dbなどに対してブロッキングio呼び出しを実行します。

予想されるトラフィックを処理するには、このスレッドプールのサイズを適切に調整する必要があります。

基本的に、Java EEサーブレット仕様を使用する場合、着信接続ごとに1つのスレッドで要求を処理する必要があります。

そこにいくつかのノンブロッキングフレームワークがあります。http://www.playframework.org/とJettyをチェックしてください(デフォルトではJettyのノンブロッキング?

于 2012-06-11T15:35:01.893 に答える