JVM servers are limited in the number of threads that they
can use to run Java™ applications.
The CICS® region also has a
limit on the number of threads, because each thread uses a T8 TCB.
You can adjust the thread limit using CICS statistics
to balance the number of JVM servers in the region against the performance
of the applications running in each JVM server.
About this task
Each JVM server can have a maximum of 256 threads to run Java applications. In a CICS region you can have a maximum
of 2000 threads. If you have many JVM servers running in the CICS region (for example, more
than seven), you cannot set the maximum value for every JVM server.
You can adjust the thread limit of each JVM server to balance the
number of JVM servers in the CICS region
against the performance of the Java applications.
The
thread limit is set on the JVMSERVER resource, so set an initial value
and use CICS statistics to
adjust the number of threads when you test your Java workloads.
Procedure
- Enable the JVMSERVER resources and run your Java application workload.
- Collect JVMSERVER resource statistics using an appropriate
statistics interval.
You can use the view in CICS Explorer®, or you can use the DFH0STAT
statistics program.
- Check how many times and how long a task waited for a thread.
The
JVMSERVER thread limit waits
and
JVMSERVER thread
limit wait time
fields contain this information.
- If the values in these fields are high and many tasks are suspended
with the JVMTHRD wait, the JVM server does not have enough threads
available. Increasing the number of threads can increase the processor
usage, so check you have enough MVS™ resource
available.
- If the values in these fields are low and the peak number of tasks
is below the maximum number of threads available, you can free up
threads for other JVM servers by reducing the thread limit.
- To check the availability of MVS resource,
use the dispatcher TCB pool and TCB mode statistics to assess the
T8 TCB usage across the CICS region.
Each thread in a JVM server uses a T8 TCB and you are limited
to 2000 in a region. T8 TCBs cannot be shared between JVM servers,
although all TCBs are in a THRD TCB pool. If the number of waiting
TCBs and processor usage is low, it indicates that there is enough MVS resource available.
- To adjust the number of threads that can run in the JVM
server, change the THREADLIMIT value on the JVMSERVER resource.
- Run the Java application
workload again and use the statistics to check that the number of
waiting tasks has reduced.
What to do next
To tune the performance of your JVM servers, see Improving JVM server performance.