8

WebSphere について質問がありますが、ドキュメントに何も見つかりません...

WebContainer スレッド プールが完全に使用され、新しい要求が受信されるとどうなりますか? すべてが使用され、最大スレッド プール サイズに達した状況について話しているのは、リクエストを処理するために新しいプールが作成されない可能性があることを意味します。

リクエストは: - すぐに失敗し、レスポンスに何らかのエラーが含まれますか? - スレッドの 1 つがプールに戻ったときに、WAS は指定された期間、リクエストを何らかの方法で「キューに入れ」、処理しますか? 待機時間が長すぎると、何らかのエラー/タイムアウトが発生する可能性がありますか? - WAS は要求を無期限に「キューに入れ」、タイムアウトはユーザー側 (Web ブラウザー/アプリ) でのみ発生する可能性がありますか?

4

1 に答える 1

9

正確な動作はおそらく文書化されていないため、動作を改善するためにリリース間で詳細を変更できます。javacore を調べるか、さまざまなドキュメント (たとえば、このIBM WebSphere Application Server Performance Cookbookドキュメントの BoundedBuffer セクションなど) から情報を収集することで、動作を推測できる可能性があります。

スレッド プール要求バッファーは、本質的にスレッド プールの前のバックログです。スレッド プールが最大サイズで、すべてのスレッドがディスパッチされている場合、作業は requestBuffer のキューに入れられます。requestBuffer の最大サイズは、スレッド プールの最大サイズと同じです。ただし、ブロック・モード EXPAND_WHEN_QUEUE_IS_FULL_ERROR_AT_LIMIT または EXPAND_WHEN_QUEUE_IS_FULL_WAIT_AT_LIMIT で作業単位がスレッド・プールで実行される場合、最大サイズは ThreadPoolMaxSize * 10 です。 JVM はスレッド プールごとに実行されます)。requestBuffer がいっぱいになると、作業単位の実行方法に応じて、作業は待機するか、ThreadPoolQueueIsFullException をスローします。

実際には、これは、maxThreads スレッドが作業の実行でビジーになった後、追加の maxThreads リクエストがバインドされたバッファーのキューに入れられ、そのバッファーがいっぱいになると、ソケット スレッドは作業をキューに入れることができるまでブロックされることを意味します。スレッドが使用可能になり、境界付きバッファーにスペースができるまでブロックされます。

于 2015-08-12T17:06:00.833 に答える