Java Garbage Collection Tuning - -XX:GCTimeLimit and -XX:GCHeapFreeLimit not working? -


in our gc logs, seeing sort of pattern extended periods of time (20+ minutes). here small snapshot of full gcs running during time:

2017-08-17t17:40:55.958-0500: 2263.468: [full gc [psyounggen: 200192k->200191k(272896k)] [paroldgen: 698843k->698835k(698880k)] 899035k->899026k(971776k) [pspermgen: 26732k->26732k(26880k)], 0.3358980 secs] [times: user=12.79 sys=0.03, real=0.33 secs]  2017-08-17t17:40:56.294-0500: 2263.805: [full gc [psyounggen: 200192k->200191k(272896k)] [paroldgen: 698835k->698835k(698880k)] 899027k->899027k(971776k) [pspermgen: 26732k->26732k(26880k)], 0.4146470 secs] [times: user=14.99 sys=0.04, real=0.42 secs]  2017-08-17t17:40:56.710-0500: 2264.220: [full gc [psyounggen: 200192k->200191k(272896k)] [paroldgen: 698835k->698835k(698880k)] 899027k->899027k(971776k) [pspermgen: 26732k->26732k(26880k)], 0.3549330 secs] [times: user=14.16 sys=0.03, real=0.35 secs]  2017-08-17t17:40:57.065-0500: 2264.576: [full gc [psyounggen: 200191k->200191k(272896k)] [paroldgen: 698835k->698835k(698880k)] 899027k->899027k(971776k) [pspermgen: 26732k->26732k(26880k)], 0.3333880 secs] [times: user=12.86 sys=0.04, real=0.34 secs]  2017-08-17t17:40:57.399-0500: 2264.910: [full gc [psyounggen: 200191k->200191k(272896k)] [paroldgen: 698843k->698835k(698880k)] 899035k->899027k(971776k) [pspermgen: 26732k->26732k(26880k)], 0.3361300 secs] [times: user=13.10 sys=0.04, real=0.33 secs]  2017-08-17t17:40:57.736-0500: 2265.246: [full gc [psyounggen: 200191k->200191k(272896k)] [paroldgen: 698845k->698835k(698880k)] 899037k->899027k(971776k) [pspermgen: 26732k->26732k(26880k)], 0.3165070 secs] [times: user=11.66 sys=0.03, real=0.32 secs]  2017-08-17t17:40:58.053-0500: 2265.564: [full gc [psyounggen: 200191k->200191k(272896k)] [paroldgen: 698835k->698834k(698880k)] 899027k->899026k(971776k) [pspermgen: 26732k->26732k(26880k)], 0.3860970 secs] [times: user=15.29 sys=0.09, real=0.39 secs]  2017-08-17t17:40:58.440-0500: 2265.951: [full gc [psyounggen: 200192k->200191k(272896k)] [paroldgen: 698834k->698834k(698880k)] 899026k->899026k(971776k) [pspermgen: 26732k->26732k(26880k)], 0.3679940 secs] [times: user=14.06 sys=0.04, real=0.37 secs]  2017-08-17t17:40:58.809-0500: 2266.319: [full gc [psyounggen: 200192k->200191k(272896k)] [paroldgen: 698834k->698834k(698880k)] 899026k->899026k(971776k) [pspermgen: 26732k->26732k(26880k)], 0.3336190 secs] [times: user=12.92 sys=0.03, real=0.33 secs]  2017-08-17t17:40:59.143-0500: 2266.654: [full gc [psyounggen: 200192k->200191k(272896k)] [paroldgen: 698834k->698834k(698880k)] 899026k->899026k(971776k) [pspermgen: 26732k->26732k(26880k)], 0.3498820 secs] [times: user=13.31 sys=0.04, real=0.35 secs]  2017-08-17t17:40:59.494-0500: 2267.004: [full gc [psyounggen: 200192k->200191k(272896k)] [paroldgen: 698834k->698834k(698880k)] 899026k->899026k(971776k) [pspermgen: 26732k->26732k(26880k)], 0.3055050 secs] [times: user=11.00 sys=0.04, real=0.31 secs]  2017-08-17t17:40:59.800-0500: 2267.310: [full gc [psyounggen: 200192k->200191k(272896k)] [paroldgen: 698834k->698834k(698880k)] 899026k->899026k(971776k) [pspermgen: 26732k->26732k(26880k)], 0.3235970 secs] [times: user=12.22 sys=0.05, real=0.32 secs]  

so have full gc running multiple times per second, leaving little time jvm real work. tried setting following arguments force "gc overhead" oom when occurs:

-xx:gctimelimit=5     -xx:gcheapfreelimit=50 

here oracle documentation on these reference: https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gc-ergonomics.html

i think these settings in place (>5% of time spent in gc, <50% heap free), triggering outofmemoryerror: gc overhead limit exceeded. thoughts on why not triggering expect?

edit - little more info, here top of gc log, showing version info, arguments, etc:

java hotspot(tm) server vm (24.101-b14) linux-x86 jre (1.7.0_101-b14), built on mar 31 2016 05:26:20 "java_re" gcc 4.3.0 20080428 (red hat 4.3.0-8) memory: 4k page, physical 131954348k(1343412k free), swap 125812704k(125512524k free) commandline flags: -xx:gcheapfreelimit=50 -xx:gctimelimit=5 -xx:+heapdumponoutofmemoryerror -xx:heapdumppath=/cerner/core_files -xx:initialheapsize=446693376 -xx:maxheapsize=1073741824 -xx:onoutofmemoryerror=/usr/local/cwx/ejs_oom.ksh -xx:+printgc -xx:+printgcapplicationstoppedtime -xx:+printgcdatestamps -xx:+printgcdetails -xx:+printgctimestamps -xx:+printheapatgc -xx:+useparallelgc  

one possibility have disabled -xx:-usegcoverheadlimit

edit - little more info, here top of gc log, showing version info, arguments, etc: -xx:gctimelimit=0

that's not option have set.


Comments

Popular posts from this blog

Is there a better way to structure post methods in Class Based Views -

performance - Why is XCHG reg, reg a 3 micro-op instruction on modern Intel architectures? -

jquery - Responsive Navbar with Sub Navbar -