To tune MDB processing, you consider and act on a variety of settings together. There is a wide range of values that you can select, and possibilities to consider, because of the variety of workloads possible to run in any given server.
Before you begin
When a message-driven bean is mapped (that is, listening to) a queue, or to a topic through a durable subscription, a JMS message first enters into the WebSphere server in the controller, so we say the server is "listening in the controller" for these messages. The "listening in the controller" term is used throughout this description of tuning MDB processing.
Why and when to perform this task
If you want to optimize the processing of messages by message-driven beans, use this task to consider and act on the associated settings.
Tuning MDB processing in the server is a part of the greater task of tuning the server’s entire workload. This needs consideration of a variety of settings and the interactions between those settings.
To tune MDB processing, the following settings must be considered together: WLM service class definitions, WebSphere workload profile selection, Message Listener Service Listener Port settings, JMS Connection Factory pooling settings, and WebSphere MQ Queue Manager settings.
It is difficult to give one recommendation about what values to select for each of these settings, given the variety of workloads possible to run in any given server. There are a wide variety of possibilities to take into consideration, including the following considerations:
The suggested settings below provide a starting point, under the assumption that the server is configured with only a single application consisting of a single message-driven bean installed and running on this server.
The starting point settings are followed by more detailed discussions that explain the rationale behind the suggestions, and describe the listener port function in more detail in the "listening in the controller" case on z/OS. Together they can help you to understand the function and the settings enough to make your own setting selections for your own systems and servers.
Steps for this task
The suggested minimum value is computed by the formula:
2 * (maximum number of servants) * (number of worker threads in one servant)
Here "servants" means the same as "server instances" as the setting is described on the administrative console. To calculate the number of worker threads in a single servant, see the description of "Workload profile" in ORB services advanced settings.
For further considerations setting the Listener Port maximum sessions property, see Concepts and considerations for MDB settings on z/OS.
Example
In this case, set your listener port maximum sessions value to at least 240 = 2 * 3 * 40.
In this case, you need to set the connection factory’s Connection Pool Max Connections value to 42. One connection for each of the two message-driven beans to be used by the listener port, and one connection potentially for each of the 40 onMessage() dispatches that night be running concurrently. (Remember that the connection pool is a per-servant pool).
For debugging tips, refer to Best practices for debugging MDB throttle support.