WebSphereサーバ・チューニング入門
連載一覧へ
WebSphereサーバ・チューニング入門(7)

Javaのメッセージング・サービスを速くするには?


日本アイ・ビー・エム 東京基礎研究所
アドバイザリー・リサーチャー 上野憲一郎

2008/8/7


本連載は、Javaアプリケーション・サーバの1つである、IBM WebSphere Application Server(以下、WAS)についてのパフォーマンス・チューニングに関する入門記事です。チューニングといっても、実施するエンジニアによって、その方法は異なりますが、本連載はWASを前提とし、かつ80%のケースをカバーすることを目標とします(編集部注:WASのインストールから学びたい読者は、「バージョン別セットアップマニュアル一覧」のWebSphere Application Serverを参照してください)

 今回は、JMS(Java Message Service)をサポートするランタイムのパフォーマンス・チューニングについて解説します。WASは、「デフォルトJMSプロバイダー」と呼ばれるJMS実装ランタイムを提供しています。JMS実装ランタイムのパフォーマンス・チューニングのポイントは以下のとおりです下記リストはインデックスになっています

  1. JMSデリバリー・モード
  2. メッセージの永続先
  3. データ・バッファ
  4. 処理並列度

 以下、それぞれのチューニング・ポイントについて解説を行います。

【1】JMSデリバリー・モード

 JMS 1.1は、「NON_PERSISTENT」と「PERSISTENT」の2つのデリバリー・モードを規定しています。WASのデフォルトJMSプロバイダーは、2つのデリバリー・モードに対して以下の5つの信頼性オプション(「デリバリー・オプション」とも呼ばれます)をサポートしています(表1)。

表1 信頼性レベルとパフォーマンス性能
パフォーマンス 信頼性レベル
最も速い ベストエフォート非パーシスタント
高速非パーシスタント
高信頼性非パーシスタント
高信頼性パーシスタント
最も遅い 保障パーシスタント

 信頼性とパフォーマンスは、トレードオフの関係にあるので、要件に応じて、適切なオプションを選択することになります。信頼性オプションの詳細については、InfoCenter「メッセージ信頼性レベル」を参照してください。

デリバリー・モードの設定

 デリバリー・モードの設定は、以下の4カ所で行うことができます。

  1. JMSクライアント
  2. デフォルトJMSプロバイダーあて先リソース
  3. JMSプロバイダー・接続ファクトリにおけるJMSデリバリー・モードと信頼性レベルの対応付け
  4. バスあて先

 以下にそれぞれの設定方法について説明します。

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 APIJSR 914を参照してください。

2.デフォルトJMSプロバイダーあて先リソースによるデリバリー・モード設定

 JMSプロバイダーのあて先リソースごとにデリバリー・モードを指定します。「アプリケーション」を選択すると、JMSクライアントにおけるデリバリー指定が使用されます。「非パーシスタント」あるいは「パーシスタント」を選択すると、このJMSあて先に対するデリバリー・モードの指定が使用されます(図1)。

図1 宛先リソースのデリバリー・モード設定
図1 あて先リソースのデリバリー・モード設定

3.JMS接続ファクトリ設定におけるJMSデリバリー・モードとWASメッセージングの信頼性モードとの対応付け

 JMS接続ファクトリごとに、JMSデリバリー・モード(非パーシスタントおよびパーシスタント)と信頼性モード(ベストエフォート非パーシスタント、高速非パーシスタント、高信頼性非パーシスタント、高信頼性パーシスタント、保障パーシスタント)の対応付けが必要になります(図2)。

図2 「JMSデリバリー・モード」と「信頼性レベル」の対応付け
図2 「JMSデリバリー・モード」と「信頼性レベル」の対応付け

 デフォルト設定は、非パーシスタント・デリバリーモードが「高速非パーシスタント」、パーシスタント・デリバリーモードが「高信頼性パーシスタント」に結び付いています(図3)。

図3 JMS接続ファクトリーにおけるサービス品質設定
図3 JMS接続ファクトリにおけるサービス品質設定

4.バスあて先による指定

 デフォルト設定として、「プロデューサーによるデフォルトの信頼性のオーバーライドを可能にする」が指定されています。これによりメッセージ・プロデューサーの指定よりも、バスあて先で指定された信頼性オプションが優先されます(図4)。

図4 バス宛先におけるサービス品質設定
図4 バスあて先におけるサービス品質設定

 

  1-2-3-4

 INDEX
第7回 Javaのメッセージング・サービスを速くするには?
Page1
【1】JMSデリバリー・モード
  Page2
【2】メッセージの永続先(メッセージ・ストア・タイプ)
コラム 「データ・ストアとしてDB2を使用する場合のヒント」
  Page3
【3】データ・バッファ
【4】処理並列度
  Page4
JMS関連パフォーマンス・チューニングのまとめ
サーバ・チューニングに必要なポイントはまだまだある




Java Solution全記事一覧

TechTargetジャパン

Java Solution フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH