EJB コンテナの監視を有効にした場合、Bean のプール設定とキャッシュ設定に基づいて、個別 Beans の統計を検証できます。
たとえば、次の監視コマンドにより、ステートフルセッション Bean の「Bean キャッシュ」を取得できます。
asadmin get --user admin --host e4800-241-a --port 4848 -m specjcmp.application.SPECjAppServer.ejb-module. supplier_jar.stateful-session-bean.BuyerSes.bean-cache.*
監視出力のサンプルを次に示します。
resize-quantity = -1 cache-misses = 0 idle-timeout-in-seconds = 0 num-passivations = 0 cache-hits = 59 num-passivation-errors = 0 total-beans-in-cache = 59 num-expired-sessions-removed = 0 max-beans-in-cache = 4096 num-passivation-success = 0
次の監視コマンドは、エンティティー Bean の Bean プール統計を提供します。
asadmin get --user admin --host e4800-241-a --port 4848 -m specjcmp.application.SPECjAppServer.ejb-module. supplier_jar.stateful-entity-bean.ItemEnt.bean-pool.* idle-timeout-in-seconds = 0 steady-pool-size = 0 total-beans-destroyed = 0 num-threads-waiting = 0 num-beans-in-pool = 54 max-pool-size = 2147483647 pool-resize-quantity = 0 total-beans-created = 255
次の監視コマンドは、ステートレス Bean の Bean プール統計を提供します。
asadmin get --user admin --host e4800-241-a --port 4848 -m test.application.testEjbMon.ejb-module.slsb.stateless-session-bean.slsb.bean-pool.* idle-timeout-in-seconds = 200 steady-pool-size = 32 total-beans-destroyed = 12 num-threads-waiting = 0 num-beans-in-pool = 4 max-pool-size = 1024 pool-resize-quantity = 12 total-beans-created = 42
Bean のチューニングでは、一定の期間を区切って、対象となる Bean のキャッシュおよびプールの動作をグラフ化します。
あまりに多くのパッシベーションが発生しており、JVM ヒープは比較的小さいままである場合は、max-cache-size または cache-idle-timeout-in-seconds の値を大きくすることができます。ガベージコレクションがあまりにも頻繁に発生しており、プールサイズが増加しているが、キャッシュヒット率が低い場合、pool-idle-timeout-in-seconds の値を小さくしてインスタンスを破棄することができます。
max-pool-size にゼロ (0) を指定すると、プールがアンバインドされます。プールされた Beans は、pool-idle-timeout-in-seconds に短い間隔を指定することによって削除される場合を除き、メモリー内に残ります。本番システムについては、アンバインドされたものとしてプールを指定することは推奨されません。
Bean 内のすべてのメソッドについてメソッド呼び出し統計を収集するには、次のコマンドを使用します。
asadmin get -m monitorableObject.*
monitorableObject は、次に示すような監視可能オブジェクトの階層からの完全指定 ID です。
serverInstance.application.applicationName.ejb-module.moduleName
moduleName は、モジュール x.jar に対しては x_jar です。
.stateless-session-bean.beanName .bean-pool .bean-method.methodName
.stateful-session-bean.beanName .bean-cache .bean-method.methodName
.entity-bean.beanName .bean-cache .bean-pool .bean-method.methodName
.message-driven-bean.beanName .bean-pool .bean-method.methodName (methodName = onMessage)
スタンドアロン Beans については、次のパターンを使用します。
serverInstance.application.applicationName.standalone-ejb-module.moduleName
指定可能な ID は、ejb-module と同じです。
たとえば、エンティティー Bean 内のメソッドについての統計を得るには、次のコマンドを使用します。
asadmin get -m serverInstance.application.appName.ejb-module.moduleName .entity-bean.beanName.bean-method.methodName.*
監視可能なオブジェクト (アプリケーション、モジュール、Beans、およびメソッド) およびオブジェクト属性を検索するには、管理コンソールを使用します。詳細は、『Sun Java System Application Server Enterprise Edition 8.2 管理ガイド』の第 16 章「コンポーネントとサービスの監視」を参照してください。あるいは、asadmin list コマンドを使用します。詳細は、list(1) を参照してください。
ステートフルセッション Bean のパッシベーションについての統計を得るには、次のコマンドを使用します。
asadmin get -m serverInstance.application.appName.ejb-module.moduleName .stateful-session-bean.beanName.bean-cache.*
返された属性値から、次のコマンドを使用します。
num-passivationsnum-passivation-errorsnum-passivation-success