Start of change

Publish/subscribe performance tuning

WebSphere Event Broker supports up to 25,000 subscriptions on a broker, but to handle this many subscriptions you need to tune your brokers and the databases that they use. The following sections describe some of the things that you need to consider.

Brokers

You might need to change the broker's jvmMaxHeapSize. The default value for this is 128 MB.

This needs to be set to a value large enough for all topics in the subscriptions. For example, if you have 10,000 subscriptions, each for a topic that uses 20 KB of storage, you need to set the value of the jvmMaxHeapSize property to at least 200 MB.

Use the mqsichangeproperties command to increase the size of jvmMaxHeapSize to 256 MB:
mqsichangeproperties brokername -o ComIbmJVMManager -n jvmMaxHeapSize -v 268435456
where brokername is the name of your broker.
The Configuration Manager uses the list of subscriptions which might be stored on your local hard drive.
  • Windows platform On Windows, the directory is created at C:\Documents and Settings\All Users\Application Data\IBM\MQSI.
  • UNIX platform On UNIX systems, the directory is created at /var/mqsi.
The directory must be at least two times the size of the topic space; that is, for 10,000 subscriptions each using 20 KB, the directory should be at least 512 MB.

Databases

WebSphere Event Broker stores its subscription information in its database. You might need to do some tuning of your database to handle the maximum 25,000 subscriptions.
  • Windows platform UNIX platform There are two limits to be noted when using DB2. These both relate to being able to successfully restart the broker.
    • The first limit occurs when there are about 1000 subscriptions. The DB2 parameter APP_CTL_HEAP_SZ must be set to a high value to enable the broker to query it's database at start up; a value of '8192' should be large enough for 1000 subscriptions. You can change the value by starting a db2 command prompt and issuing the command db2 update db cfg using APP_CTL_HEAP_SZ 8192. You might then need to terminate any connections to the database.
    • The second limit occurs when there are around 8000 subscriptions. When WebSphere Event Broker attempts to start, the following error might be reported in the system log:
      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 '.    
      This is due to a limitation in the number of LOB handles in DB2. To overcome this problem, you require a patch in DB2; you need to edit file db2cli.ini.
      • UNIX platform This file is located in {DB2InstanceHome}/sqllib/cfg/db2cli.ini.
      • Windows platform This file is located in {Program Files}\IBM\SQLLIB\db2cli.ini.
      The following lines should be added to the file:
      [{Database name}]
      PATCH2=50
       LobCacheSize=1048576      
      The PATCH line instructs DB2 to free up LOB locators after it has used them, and the LobCacheSize parameter adjusts the total memory that is available to LOB locators; in this case 1 GB. You might then need to restart the DB2 instance.
  • On z/OS, there is a database limit when using DB2 Version 8 that occurs at around 15,000 subscriptions. To overcome this, you need to modify the value of NUMLKUS. A value of 20000 should support 25,000 subscriptions.

Collectives

When a subscription is made to a broker that is a member of a collective, or is directly linked to another broker, all brokers that are connected to the broker create a proxy subscription. The total number of proxy subscriptions and direct subscriptions must be less than 25,000 for each of your brokers. This has implications on how you plan your broker topology.

For example, consider a collective of N brokers. To maximize connectivity, you connect an instance of a client to each broker with each of those instances subscribing to the same unique topic. Therefore, for N brokers there are N clients for each unique topic. In this situation, each broker has a subscription to each client connected to it, and also a proxy subscription to each of the other brokers in the collective. Therefore, each broker has N subscriptions for every unique topic (One for the client that is directly connected and N-1 for the proxy subscriptions to all of the other brokers). If there are T unique topics, you should make sure that N*T <= 25000. That is, if you have 1000 unique topics, your collective should be restricted to have a maximum of 25 brokers.

Related tasks
Modifying a broker
Configuring databases
Related reference
mqsichangeproperties command
End of change