Tuning Java App on an 8-core Sun Fire T2000 Server
I am deploying a java app on an 8-core (32 simultaneous threads) Sun Fire T2000 Server running Solaris 10 and have some questions about tuning the app and the JVM for this platform.
One thing that I have noticed is that the JVM starts up with 43 threads right out of the box. Is it normal for the JVM to do this (our JVM is build 1.5.0_09-b03)?
The flow of our application is this: read xml files from the file system (NAS), process data contained within the files, and then send filtered/corrected data in xml format to various WebsShere MQs (data is also archived to file system, NAS again).
The app is configured as two java processes both using a fixed thread pool (java.util.concurrent.Executors.newFixedThreadPool) of 14 worker threads. This configuration, 2 java processes with 14 threads each, has preformed better for us than one java process with 30 threads. Our problem is that even with two java processes running, vmstat reports about 60% user, 20% sys, and 20% idle cpu usage. We had previously worked on removing most of the blocking between the threads but I