インバウンドのMQアダプタでMQメッセージを受信する場合のチューニングについて説明します。
インバウンドのMQアダプタが1つのMQキューから同時に受信して処理できるメッセージ数を定義します。インバウンドのMQアダプタの同時処理数については、以下が設定できます。
最小プールサイズ
最大プールサイズ
アイドルタイムアウト
インバウンドのMQアダプタの同時処理数は、asadmin setコマンドで設定します。asadminコマンドの詳細は、“Interstage Application Server Java EE運用ガイド(Java EE 6編)”の“スレッドプールの定義項目”を参照してください。
実行例
<Interstageインストールディレクトリ>\F3FMisje6\glassfish\bin\asadmin set ISIMQI_000.thread-pools.thread-pool.ESIMQInboundMessageDrivenBean-ISIMQI_000.min-thread-pool-size=2 <Interstageインストールディレクトリ>\F3FMisje6\glassfish\bin\asadmin set ISIMQI_000.thread-pools.thread-pool.ESIMQInboundMessageDrivenBean-ISIMQI_000.max-thread-pool-size=200 <Interstageインストールディレクトリ>\F3FMisje6\glassfish\bin\asadmin set ISIMQI_000.thread-pools.thread-pool.ESIMQInboundMessageDrivenBean-ISIMQI_000.idle-thread-timeout-seconds=900
/opt/FJSVisje6/glassfish/bin/asadmin set ISIMQI_000.thread-pools.thread-pool.ESIMQInboundMessageDrivenBean-ISIMQI_000.min-thread-pool-size=2 /opt/FJSVisje6/glassfish/bin/asadmin set ISIMQI_000.thread-pools.thread-pool.ESIMQInboundMessageDrivenBean-ISIMQI_000.max-thread-pool-size=200 /opt/FJSVisje6/glassfish/bin/asadmin set ISIMQI_000.thread-pools.thread-pool.ESIMQInboundMessageDrivenBean-ISIMQI_000.idle-thread-timeout-seconds=900
※ISIMQI_000:インバウンドのMQアダプタのIJServerクラスタ名
設定項目の詳細については、“Interstage Application Server Java EE運用ガイド(Java EE 6編)”の“EJBコンテナのチューニング”の“スレッドプーリング”を参照してください。
注意
インバウンドのMQアダプタの最大プールサイズは2以上に設定してください。
受信するメッセージのサイズが大きくインバウンドのMQアダプタでメモリ不足が発生する場合、MQアダプタのJava VMヒープ領域をチューニングすることで、メモリ不足を解消できます。ヒープ領域サイズの見積もりについては、“ISI Java EE導入ガイド”の“メモリ容量の見積り”を参照してください。
インバウンドのMQアダプタのJava VMヒープサイズは、asadmin create-jvm-optionsコマンドで設定します。asadminコマンドの詳細は、“Interstage Application Server Java EE運用ガイド(Java EE 6編)”の“Java VMの定義項目”を参照してください。
実行例
<Interstageインストールディレクトリ>\F3FMisje6\glassfish\bin\asadmin create-jvm-options --target ISIMQI_000 \-Xmx256m:\-XX\:MaxPermSize=128m
/opt/FJSVisje6/glassfish/bin/asadmin create-jvm-options --target ISIMQI_000 \\-Xmx256m:\\-XX\\:MaxPermSize=128m
※ISIMQI_000:インバウンドのMQアダプタのIJServerクラスタ名
インバウンドのMQアダプタにサーバーインスタンスを追加することで、同一のMQキューに対し、複数のプロセスからメッセージ受信を行うことができます。
サーバーインスタンスの追加と削除の手順は、以下のとおりです。以下の手順で使用するasadminコマンドの詳細は、“Interstage Application Server Java EE運用ガイド(Java EE 6編)”の“asadmin”を参照してください。
サーバーインスタンスを追加する場合
インバウンドのMQアダプタの停止
インバウンドのMQアダプタを停止します。詳細は、“1.1.2 停止”の“インバウンドのMQアダプタの停止”を参照してください。
サーバーインスタンスの追加
asadmin create-local-instanceコマンドを実行し、インバウンドのMQアダプタのIJServerクラスタにサーバーインスタンスを追加します。
実行例
<Interstageインストールディレクトリ>\F3FMisje6\glassfish\bin\asadmin create-local-instance --cluster ISIMQI_000 ISIMQI_000i2
/opt/FJSVisje6/glassfish/bin/asadmin create-local-instance --cluster ISIMQI_000 ISIMQI_000i2
※ISIMQI_000:インバウンドのMQアダプタのIJServerクラスタ名
※ISIMQI_000i2:追加するサーバーインスタンス名
サーバーインスタンスを削除する場合
インバウンドのMQアダプタの停止
インバウンドのMQアダプタを停止します。詳細は、“1.1.2 停止”の“インバウンドのMQアダプタの停止”を参照してください。
サーバーインスタンスを削除します。
asadmin delete-local-instanceコマンドを実行し、サーバーインスタンスを削除します。
実行例
<Interstageインストールディレクトリ>\F3FMisje6\glassfish\bin\asadmin delete-local-instance ISIMQI_000i2
/opt/FJSVisje6/glassfish/bin/asadmin delete-local-instance ISIMQI_000i2
※ISIMQI_000i2:削除するサーバーインスタンス名
サーバーインスタンスの数は、以下を考慮して設計します。
業務リクエストを受信するJava VMプロセスがダウンした場合でも、他のプロセスで運用を継続できます。
メモリを多く使用するようなメッセージを受信する場合、1プロセスあたりのメモリ使用量を削減できる可能性があります。なお、サーバーインスタンスを増やすと、システム全体のメモリ使用量が増加する場合があるため注意してください。
高負荷状況では、サーバーインスタンスを増やすことでスループットが向上する場合があります。
注意
設定値の妥当性は、必ず負荷試験を実施して確認してください。
サーバーインスタンスを追加する場合は、物理メモリなどのシステム資源が十分かどうか確認してください。
デフォルトで作成されているサーバーインスタンス(インバウンドMQアダプタ名i)は削除しないでください。