大量のサブスクリプションを扱うには、ブローカーおよびブローカーが使用するデータベースを調整してください。
WebSphere® Message Broker は、ブローカー上で 25,000 までのサブスクリプションをサポートしています。以下のセクションでは、これらのサブスクリプションを効率よく扱うために、ブローカーとデータベースを調整するためにできるアクションをいくつか説明します。
ブローカーのプロパティー jvmMaxHeapSize を変更します。 このプロパティーのデフォルト値は 128 MB です。
このプロパティーの値を、サブスクリプション内のトピックすべてに対して十分な大きさにしなければなりません。例えば、10 000 のサブスクリプションがあり、各トピックが 20 KB のストレージを使用する場合、jvmMaxHeapSize プロパティーの値を少なくとも 200 MB に設定してください。
mqsichangeproperties brokername -o ComIbmJVMManager -n jvmMaxHeapSize -v 268435456
ここで、brokername は、ブローカーの名前です。構成マネージャーは、ローカルのハード・ディスクに格納されている可能性のあるサブスクリプションのリストを使用します。
このディレクトリーは、少なくともトピック・スペースの 2 倍のサイズでなければなりません。つまり、それぞれが 20 KB を使用するサブスクリプションが 10 000 ある場合、このディレクトリーは少なくとも 512 MB でなければなりません。
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 および UNIX システムの場合、このファイルは {DB2InstanceHome}/sqllib/cfg/db2cli.ini. にあります。
Windows 32 システムでは、このファイルは C:¥Program Files¥IBM¥SQLLIB¥db2cli.ini. にあります。
以下の行をこのファイルに追加します。
[{Database name}] PATCH2=50 LobCacheSize=1048576この PATCH 行は、LOB ロケーターを使用した後に解放するように DB2 に指示し、LobCacheSize パラメーターは LOB ロケーターが使用可能な合計メモリーを調整します。このケースでは、1 GB になっています。 そして、おそらく DB2 インスタンスを再始動する必要があります。
集合のメンバーであるか、または別のブローカーに直接リンクされているブローカーに対してサブスクリプションが行われると、そのブローカーに接続されているすべてのブローカーはプロキシー・サブスクリプションを作成します。 プロキシー・サブスクリプションとダイレクト・サブスクリプションの総数は、ブローカーごとに 25 000 より少なくなっている必要があります。この制限は、どのようにブローカー・トポロジーを計画するかに影響があります。
たとえば、N 個のブローカーの集合を考慮してください。
接続性を最大化するには、クライアントのインスタンスを各ブローカーに接続し、このときにこれらの各インスタンスが同一の固有のトピックにサブスクライブするようにします。 したがって、N 個のブローカーの場合、各固有のトピックに N 個のクライアントがあります。
この状態では、各ブローカーには、ブローカーに接続された各クライアントへのサブスクリプションがあり、集合内の他の各ブローカーへのプロキシー・サブスクリプションもあります。
したがって、各ブローカーには、固有の各トピックに対する N 個のサブスクリプションがあります (直接接続されたクライアントに 1 つと、他のすべてのブローカーへのプロキシー・サブスクリプションには N-1 個)。T 個の固有のトピックがある場合、N*T <= 25 000 であることを確認してください。 つまり、1000 個の固有トピックがある場合、集合のサイズを最大で 25 個のブローカーに制限します。