パブリッシュ/サブスクライブのパフォーマンス・チューニング

大量のサブスクリプションを扱うには、ブローカーおよびブローカーが使用するデータベースを調整してください。

WebSphere® Message Broker は、ブローカー上で 25,000 までのサブスクリプションをサポートしています。以下のセクションでは、これらのサブスクリプションを効率よく扱うために、ブローカーとデータベースを調整するためにできるアクションをいくつか説明します。

ブローカー

ブローカーのプロパティー jvmMaxHeapSize を変更します。 このプロパティーのデフォルト値は 128 MB です。

このプロパティーの値を、サブスクリプション内のトピックすべてに対して十分な大きさにしなければなりません。例えば、10 000 のサブスクリプションがあり、各トピックが 20 KB のストレージを使用する場合、jvmMaxHeapSize プロパティーの値を少なくとも 200 MB に設定してください。

mqsichangeproperties コマンドを使用して、jvmMaxHeapSize プロパティーの値を次のように 256 MB にします。
mqsichangeproperties brokername -o ComIbmJVMManager -n jvmMaxHeapSize -v 268435456
ここで、brokername は、ブローカーの名前です。

構成マネージャーは、ローカルのハード・ディスクに格納されている可能性のあるサブスクリプションのリストを使用します。

このディレクトリーは、少なくともトピック・スペースの 2 倍のサイズでなければなりません。つまり、それぞれが 20 KB を使用するサブスクリプションが 10 000 ある場合、このディレクトリーは少なくとも 512 MB でなければなりません。

データベース

ブローカーは、サブスクリプション情報をデータベースに保管します。最大で 25 000 のサブスクリプションを処理するには、データベースも調整する必要が生じることがあります。
  • Windows platformUNIX platformLinux platform DB2® を使用する場合、2 つの制限は重要です。 どちらの制限も、ブローカーの正常な再始動に関わるものです。
    • 最初の制限は、約 1000 のサブスクリプションがある場合に発生します。 DB2 パラメーター APP_CTL_HEAP_SZ は、始動時にブローカーがデータベースに照会できるような高い値に設定する必要があります。1000 のサブスクリプションであれば通常は 8192 という値で十分です。 値を変更するには、db2 コマンド・プロンプトを開始し、コマンド db2 update db cfg using APP_CTL_HEAP_SZ 8192 を発行します。 そして、おそらくデータベースに対する接続をすべて終了する必要があります。
    • 2 番目の制限は、サブスクリプションが約 8000 のときに発生します。ブローカーが始動を試行すると、システム・ログに次のエラーが報告されることがあります。
      Database error: SQL State '54028';
      Native Error Code '-429';
      Error Text '[IBM][CLI Driver][DB2/LINUX] SQL0429N  The maximum number of concurrent 
      LOB locators has been exceeded.  SQLSTATE=54028 '.
      このエラーは、DB2 内の LOB ハンドル数の制限によって生じます。この問題を解決するには、DB2 にパッチが必要です。ファイル db2cli.ini を編集してください。

      Linux platformUNIX platform Linux および UNIX システムの場合、このファイルは {DB2InstanceHome}/sqllib/cfg/db2cli.ini. にあります。

      Windows platform Windows 32 システムでは、このファイルは C:¥Program Files¥IBM¥SQLLIB¥db2cli.ini. にあります。

      以下の行をこのファイルに追加します。

      [{Database name}]
      PATCH2=50
       LobCacheSize=1048576
      この PATCH 行は、LOB ロケーターを使用した後に解放するように DB2 に指示し、LobCacheSize パラメーターは LOB ロケーターが使用可能な合計メモリーを調整します。このケースでは、1 GB になっています。 そして、おそらく DB2 インスタンスを再始動する必要があります。
  • z/OS platform z/OS® 上で DB2 バージョン 8 を使用している場合、データベースの制限はサブスクリプションが約 15 000 のときに発生します。これを解決するには、NUMLKUS の値を変更してください。 値を 20000 にすると、25 000 のサブスクリプションをサポートできます。

集合

集合のメンバーであるか、または別のブローカーに直接リンクされているブローカーに対してサブスクリプションが行われると、そのブローカーに接続されているすべてのブローカーはプロキシー・サブスクリプションを作成します。 プロキシー・サブスクリプションとダイレクト・サブスクリプションの総数は、ブローカーごとに 25 000 より少なくなっている必要があります。この制限は、どのようにブローカー・トポロジーを計画するかに影響があります。

たとえば、N 個のブローカーの集合を考慮してください。

接続性を最大化するには、クライアントのインスタンスを各ブローカーに接続し、このときにこれらの各インスタンスが同一の固有のトピックにサブスクライブするようにします。 したがって、N 個のブローカーの場合、各固有のトピックに N 個のクライアントがあります。

この状態では、各ブローカーには、ブローカーに接続された各クライアントへのサブスクリプションがあり、集合内の他の各ブローカーへのプロキシー・サブスクリプションもあります。

したがって、各ブローカーには、固有の各トピックに対する N 個のサブスクリプションがあります (直接接続されたクライアントに 1 つと、他のすべてのブローカーへのプロキシー・サブスクリプションには N-1 個)。T 個の固有のトピックがある場合、N*T <= 25 000 であることを確認してください。 つまり、1000 個の固有トピックがある場合、集合のサイズを最大で 25 個のブローカーに制限します。

関連タスク
ブローカーの変更
ブローカーおよびユーザー・データベースの構成
関連資料
JVM のパラメーター値
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
最終更新 : 2009-02-20 12:44:29

aq20816_