I have been grappling with a strange performance issue. I have two separate war files served via a single ear file. All jar files shared between the two war files, I have put in the APP-INF/lib folder.
The idea is to have 250 concurrent for application A (served via war file A) and 1400 concurrent for Application B (served via war file B). Now, when I run separately the concurrency tests absolutely no problem
When I run the concurrency test together for the two applications, the CPU just goes to 99% after around 800 concurrent (250-A and 600-B). Is this because of some classloading issues (Should I try with WEB-INF/lib instead)? Thread-Dump does not throw up anything....
Any help would be highly appreciated...
try activating the flag -verbose:class
and also, you yourself suggest, try either putting the jars in both WEB-INF/lib, or also in the system classpath to see if it's really a classloader/packaging issue.
Best thing really is to use a serious profiler (thread dumps is not enough) like yourkit or jrmc
Must be some thread locking issue as the two wars share the same classloader. Have a look at this
I think you might need to do some performance optimizations on your code side.
In such a case then you need to try to increase Chunk and Max perm size and Max Heap size to make difference of accessing those request.
set JAVA_PROPERTIES=%JAVA_PROPERTIES% -Dweblogic.Chunksize=8192 -Dweblogic.utils.io.chunkpoolsize=8192
increased Maxpermsize to 1024m and Heap size as 3GB.
Check the results you will see grt difference.