[z/OS]

Message-driven beans, heterogeneous workloads, and workload management on z/OS

A message-driven bean can run on an application server that hosts a heterogeneous workload including other message-driven beans and non-MDB work items. To manage a heterogeneous workload on z/OS, you should use WLM classification and define unique service classes for different-priority work running in the same server.

In the set of topics under Concepts and considerations for MDB settings on z/OS, the explanations assume, for simplicity, that your server hosts a single message-driven bean, and that several MDB instances could be simultaneously running on all servant worker threads. Of course, in reality any message-driven bean probably runs on an application server that hosts a heterogeneous workload including other message-driven beans, enterprise beans accessed through IIOP, work such as servlets and JSPs accessed through HTTP, and more work items.

Although the various MDB-related tuning controls provide a way to exert a fine-grained control over the amount of MDB work performed for a given message-driven bean or set of message-driven beans in a given server, we do not recommend using these settings to prioritize certain MDB work above or below other work in the server. Instead, we recommend using WLM classification and defining unique service classes for different-priority work running in the same server. Be sure to allow for at least one servant per unique service class.

This introduces complications in the case that work moving through a single listener port is configured with different selectors mapping onto different service classes. For more information about workload classification, see Classifying z/OS workload.

There is only one throttle for the listener port. This throttle controls the rate at which differently-prioritized messages get queued up as work records on to the WLM queue. The prioritization only occurs with the help of workload management, when the work records are queued up. It does not apply to the phase in which the messages are browsed by the queue agent thread and work records are queued up.

One strategy you can take in such a case is to raise the high threshold value (the value of the Maximum sessions property of the listener port) above the baseline recommendation of "twice the combined number of worker threads in all the server’s servants". The rationale would be to make sure the WLM queue is loaded enough to allow workload management to decide which work to process next, rather than cutting off the queuing up of work requests. (Cutting off the queuing up of work requests can leave an overabundance of lower-priority work records on the WLM queue when higher priority messages are waiting to be browsed.)

You can develop other strategies beyond what can be discussed here.

Finally, it is also possible that both the following values can be known to some degree of certainty: This could be computed perhaps using PMI, other monitoring tools, or perhaps even by a high-level understanding of how the message-driven bean fits into a greater application flow within a given server.

Should you adjust the baseline formula setting listener port maximum sessions to become twice the number of worker threads available for the maximum number of servants in the scalable server instead of twice the actual number of worker threads available in all servants? Although it is hard to give general recommendations, it may not be worth changing the formula. Lowering the setting introduces the possibility of idle worker threads, and a setting higher than strictly necessary only results in an extra buildup of messages on the WLM queue. The number of extra messages on the queue should still be a small enough number to prevent the serious problem of an overloaded WLM queue causing the server to fail.

Concept topic Concept topic    

Terms and conditions for information centers | Feedback

Last updatedLast updated: Aug 31, 2013 1:23:07 AM CDT
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=pix&product=was-nd-dist&topic=cprf_tunezmdb_mdbwlm
File name: cprf_tunezmdb_mdbwlm.html