本連載は、Javaアプリケーション・サーバの1つである、IBM WebSphere Application Server(以下、WAS)についてのパフォーマンス・チューニングに関する入門記事です。チューニングといっても、実施するエンジニアによって、その方法は異なりますが、本連載はWASを前提とし、かつ80%のケースをカバーすることを目標とします(編集部注:WASのインストールから学びたい読者は、「バージョン別セットアップマニュアル一覧」のWebSphere Application Serverを参照してください)
今回は、JMS(Java Message Service)をサポートするランタイムのパフォーマンス・チューニングについて解説します。WASは、「デフォルトJMSプロバイダー」と呼ばれるJMS実装ランタイムを提供しています。JMS実装ランタイムのパフォーマンス・チューニングのポイントは以下のとおりです(下記リストはインデックスになっています)。
以下、それぞれのチューニング・ポイントについて解説を行います。
【1】JMSデリバリー・モード
JMS 1.1は、「NON_PERSISTENT」と「PERSISTENT」の2つのデリバリー・モードを規定しています。WASのデフォルトJMSプロバイダーは、2つのデリバリー・モードに対して以下の5つの信頼性オプション(「デリバリー・オプション」とも呼ばれます)をサポートしています(表1)。
信頼性とパフォーマンスは、トレードオフの関係にあるので、要件に応じて、適切なオプションを選択することになります。信頼性オプションの詳細については、InfoCenter「メッセージ信頼性レベル」を参照してください。
デリバリー・モードの設定
デリバリー・モードの設定は、以下の4カ所で行うことができます。
- JMSクライアント
- デフォルトJMSプロバイダーあて先リソース
- JMSプロバイダー・接続ファクトリにおけるJMSデリバリー・モードと信頼性レベルの対応付け
- バスあて先
以下にそれぞれの設定方法について説明します。
1.JMSクライアントによるデリバリー・モード設定
以下のAPIを使用して、メッセージ・プロデューサー(JMS接続ファクトリ)のデフォルトのデリバリー・モードを設定(PERSISTENTがデフォルト値)できます。
- javax.jms.MessageProducer.setDeliveryMode(int deliveryMode)
上記APIの設定を、「MessageProducer.send()」メソッドで、デリバリー・モードを上書き可能です。
- javax.jms.MessageProducer.send(Destination destination, Message message, int deliveryMode, int priority, long timeToLive)
また、以下のいずれかの値をセットすることにより、デリバリー・モードを指定することもできます。
- Static int javax.jms.DeliveryMode.PERSISTENT
- Static int javax.jms.DeliveryMode.NON_PERSISTENT
詳細は、JMS 1.1 API(JSR 914)を参照してください。
2.デフォルトJMSプロバイダーあて先リソースによるデリバリー・モード設定
JMSプロバイダーのあて先リソースごとにデリバリー・モードを指定します。「アプリケーション」を選択すると、JMSクライアントにおけるデリバリー指定が使用されます。「非パーシスタント」あるいは「パーシスタント」を選択すると、このJMSあて先に対するデリバリー・モードの指定が使用されます(図1)。
3.JMS接続ファクトリ設定におけるJMSデリバリー・モードとWASメッセージングの信頼性モードとの対応付け
JMS接続ファクトリごとに、JMSデリバリー・モード(非パーシスタントおよびパーシスタント)と信頼性モード(ベストエフォート非パーシスタント、高速非パーシスタント、高信頼性非パーシスタント、高信頼性パーシスタント、保障パーシスタント)の対応付けが必要になります(図2)。
デフォルト設定は、非パーシスタント・デリバリーモードが「高速非パーシスタント」、パーシスタント・デリバリーモードが「高信頼性パーシスタント」に結び付いています(図3)。
4.バスあて先による指定
デフォルト設定として、「プロデューサーによるデフォルトの信頼性のオーバーライドを可能にする」が指定されています。これによりメッセージ・プロデューサーの指定よりも、バスあて先で指定された信頼性オプションが優先されます(図4)。
Copyright © ITmedia, Inc. All Rights Reserved.