I've been doing some performance tests using ECperf (precursor of SPECjAppServer2002).
I want to record the performance of JBoss (version 3.2.3) at the variation of server thread pool size.
For this purpose, when Jboss is up and running, I set at different values the configuration variable "MaxPoolSize" in the "Invoker Pooled" MBean, which I would expect to increase or decrease the number of server threads concurrently running on JBoss. ECperf is correctly set up and, after the attribute is set, I start the run with a high injection rate, then I would expect that at the steady state all the threads will be busy serving jobs.
To get the performance metrics right, I periodically get the actual value of number of threads at the steady state. As I read in a previous post here, it should be sufficient to read the value of the attribute "ActiveThreadCount" from the "ServerInfo" MBean, but it returns values which do not change depending on the thread pool size, e.g. at full load with maximum pool size = 1 values are sometimes of the order of 200, other times of 500-600. The same happens with maximum pool size = 500.
I tried as well to read the value of the attribute "CurrentThreadPoolSize", but it is always equal to 0.
Do you have any suggestion?
I'm wondering then if the attributes (and variables) exposed on the MBeans are readable (and writable) at run time, or only at setup time.
If the latter, why use MBeans since a configuration file will do?