We are facing frequent OOM issue in Production SOA server instances.
we have configured the JVM arug like below Is this the correct configuration or else any thing we need to add avoid frequent OOM error.
/usr/java/latest/bin/java -Dprogram.name=run.sh -server -Xms4096m -Xmx4096m -XX:PermSize=256m -XX:MaxPermSize=512m
Below restarting the server i have taken the Heap history.
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 4294967296 (4096.0MB)
NewSize = 1310720 (1.25MB)
MaxNewSize = 17592186044415 MB
OldSize = 5439488 (5.1875MB)
NewRatio = 2
SurvivorRatio = 8
PermSize = 268435456 (256.0MB)
MaxPermSize = 536870912 (512.0MB)
PS Young Generation
capacity = 1139474432 (1086.6875MB)
used = 1134005864 (1081.472267150879MB)
free = 5468568 (5.215232849121094MB)
capacity = 38797312 (37.0MB)
used = 0 (0.0MB)
free = 38797312 (37.0MB)
capacity = 159252480 (151.875MB)
used = 0 (0.0MB)
free = 159252480 (151.875MB)
PS Old Generation
capacity = 2863333376 (2730.6875MB)
used = 2863333296 (2730.6874237060547MB)
free = 80 (7.62939453125E-5MB)
PS Perm Generation
capacity = 268697600 (256.25MB)
used = 197767376 (188.6056671142578MB)
free = 70930224 (67.64433288574219MB)
I suspect some generation ration configuration is worng, Could you please correct me if am wrong.
Nobody can't give you the ultimate answer how to set the Heap and GC.
It depends extremely to your application, so it is your housework.
The first thing is to check whether you have an application memory leak. This can be done by monitoring the JVM.
If you see that the OldGen utilization is growing during the time (and the throughput is not increasing as well) you might use a profiler (testenv) or heapdumps and compare it.
From what you post it looks like a leak.
|Retrieving data ...|