Sun Java System Application Server Enterprise Edition 8.2 パフォーマンスチューニングガイド

コミットオプション

コミットオプションは、ある EJB コンポーネントがトランザクションを完了したときに EJB コンテナによって実行されるアクションを制御します。コミットオプションはパフォーマンスに大きな影響を及ぼします。

コミットオプションで使用可能な値には次の 2 つがあります。

オプション B では、ejbAcivate()ejbPassivate() の呼び出しを避けられます。このため、ほとんどの場合、オプション C の場合よりもパフォーマンスが良くなります。なぜなら、プールからオブジェクトを取得したりオブジェクトを解放してプールに戻したりするオーバーヘッドの一部を回避できるからです。

ただし、オプション C のほうがパフォーマンスが良くなる場合もあります。キャッシュ内の Beans がほとんど再利用されず、Beans が継続的にキャッシュに追加されるようであれば、Beans をキャッシュに書き込む意味がありません。オプション C が使用される場合、コンテナは、メソッド呼び出し後やトランザクション完了時に、Beans をキャッシュに書き込む代わりにプールに戻します。このオプションでは、インスタンスの再利用がより効率的に行われるほか、JVM 内のライブオブジェクトの数が減少するのでガベージコレクションの高速化も図れます。

最適なコミットオプションの決定

コミットオプション B、コミットオプション C のどちらを使用すべきかを決定するには、まず、Bean の監視コマンドを使ってキャッシュヒット数を調べます。キャッシュヒット数がキャッシュミス数を大幅に上回っている場合は、オプション B が適切な選択肢となります。最良の結果を得るためには、さらに max-cache-size cache-resize-quantity を変更する必要がある可能性もあります。

キャッシュヒット数が極めて低く、かつキャッシュミス数が非常に多い場合、アプリケーションが Bean インスタンスを再利用できていないので、max-cache-size を使ってキャッシュサイズを増やしても効果はありません (アクセスパターンが同じままであると仮定した場合)。この場合はコミットオプション C を使用することができます。キャッシュヒット数とキャッシュミス数にあまり大きな違いがない場合には、max-cache-size をチューニングし、場合によっては cache-idle-timeout-in-seconds もチューニングしてください。