1

私は現在、独立して実行される多くの非同期タスクを含むプロジェクトに取り組んでいます。スプリング構成ファイルが 1 つあります。

<task:executor id="taskScheduler" pool-size="5-20">
<task:executor id="specificTaskScheduler" pool-size="5-50" queue-capacity="100">

<!-- integration beans and 
     several object pools, with a total number of 100 beans created 
     using CommonsPoolTargetSource -->

具体的には、Spring 統合のニーズに使用する 2 つのエグゼキューターと、明示的な参照を使用して統合 Bean にフィードするタスクのみを実行するためのカスタム エグゼキューターを作成しました。その後、処理する長時間実行タスクを提供しました。私の EAR は WebLogic で実行されており、実行中のスレッドのスタック トレースをダンプしましたが、カスタム エグゼキューターの 50 のスレッドのほとんどが、プールからオブジェクトが使用可能になるのをエグゼキューターのキューで待機していることに非常に失望しました。CommonsPoolTargetSource がソースを管理するためのプラットフォームとしてエグゼキューターを使用することを望んでいませんでした。ここで何ができますか?CommonsTargetSource Bean で別の spring ファイルを作成すると解決するのでしょうか? アイデアをありがとう。

4

1 に答える 1

0

みんなありがとう。プールは問題ではないことが判明しました。インスタンスを追加し、キュー容量をゼロに設定し、拒否ポリシーを呼び出し元のスレッドでの呼び出しの実行に設定して、プール サイズをわずかに増やす必要がありました。ただし、まだ高負荷でテストする必要があります。

于 2012-06-13T08:43:18.610 に答える