The flexibility of iSM threading models enables the server to be tailored to a wide variety of application requirements. While no set of suggestions or recommendations are valid for all applications, some overlapping guidelines, as listed below, can be considered as best practices:

Sometimes using a fewer number of threads provides better performance than using many threads. For example, applications configured using only a few threads when reading from an IBM WebSphere MQ queue have been clocked as completing work faster than when the listener is configured with many threads.

  1. Determine your performance goals before you begin configuring an application. What constitutes success? For example, placing an emphasis on faster processing for its own sake consumes resources that might be better spent elsewhere.
  2. Use a minimum number threads as possible to maintain pace with the application requirements.
  3. Try to keep the number of worker threads in active use to a small multiple of the number of available processors.
  4. Process flows with long wait times built in, such as those that address external systems over communications lines, will need more threads than those that simply work in memory performing tasks such as transformations.
  5. Do not be afraid to try various configurations and measure as you proceed. Remember that threads are not the only resource that impacts performance. Consider memory availability and other processes running on the system. When measuring, remember that Java optimizes code after many transactions are run through the server (iSM). Do not start to measure until you have run at least 1000 transactions.