-4

We migrated web application from jsf1.0 to 1.2 and deployed in Websphere 8.5. EArlier application was deployed in Websphere6.0. We are facing performance issue during SOAK testing. Got some thread hung message in sysout logs also i observe lot of blocking thread in thread dump file and its released on time. Application performance degrades on time. i can see the performance issue remains same even the application is idle for 1 day .

Main issue is with the High CPU usage and high JVM memory even the application is idle for 1 day. Application is fast after the restart of server. Does the GC will not clear the JVM memory for 1 day or why this CPU is high ?

Rag7
  • 1
  • 2

1 Answers1

0

High cpu with low/declining app throughput is typical of java heap exhaust, when the JVM spends most of its time running GC trying to clear space in the heap to do real work. You should enable verbose GC logging, the GC log will show the heap state and GC activity. If the heap is below 10% tenure/OldGen free (assuming using default gencon collector) after a global/full GC, you are in heap exhaust state.

You could try increasing the heap size, maybe it just needs more space than currently provided. If the heap use (used tenure after global) continues to climb over time, when the workload offered is steady/constant, then the app probably has a memory leak. The objects accumulating in the heap can be seen by taking a core/system dump when the server is near heap exhaust state, and examining the dump with e.g. Eclipse Memory Analyzer.

Gary DeVal
  • 191
  • 4
  • Gary, thanks for your input. SOAK test is completed for day1 and the application is idle for 2nd day and in third day i can observe the application slowness. I could see 40% of free space in heap before i try to hit the application in 3rd day. Even though i could see rapid raise in application performance during the Soak test, why is the application slow in 3rd day. It works fine when jvm restarted. – Rag7 Dec 09 '17 at 12:08
  • How do you monitor free space in heap? What else is running on the system? Is it possible some other process is hogging cpu and affecting your app performance? This description (slow after idle for a day) might occur if the java process has been swapped out to disk, fully or partially, while it was idle. That can be done by the OS, or by the hypervisor if running in a VM. You can check this by monitoring system health with NMON (for Linux) or similar tool, writing a file to disk periodically. Swap-out behavior can also be seen as unexplainably long GC pauses. – Gary DeVal Dec 11 '17 at 21:45