PIA Load Balancing, JVMs and Garbage Collection David Kurtz Go-Faster Consultancy Ltd.
PSFT Tech PUG Who am I? DBA –Independent consultant System Performance tuning –PeopleSoft ERP –Oracle RDBMS Training Course UK Oracle User Group –Unix SIG Oak Table – Book –
PSFT Tech PUG Resources If you can’t hear me say so now. Please feel free to ask questions as we go along. The presentation will be available from –
PSFT Tech PUG A War Story Two forms of load balancing –Windows Network Load Balancing –IIS Proxy PSFT Recommendations: –Red Paper HA & Clustering WEB1 PIA :7001 PIA :17001 IIS :443 WEB2 PIA :7001 PIA :17001 IIS :443 Windows NetworkLoad Balancing :443
PSFT Tech PUG Problems Strange Pauses –Mostly to do with garbage collection IIS Proxy wouldn’t load balance –All of load on one PIA or the other Pauses cause IIS Proxy failover On Failover users loose their sessions
PSFT Tech PUG IIS Load Balancing iisproxy.ini WebLogicCluster= :7001, :17001 DynamicServerList=OFF …
PSFT Tech PUG IIS Load Balancing Uneven loading of PIAs caused overload of one PIA. Duration of garbage collection with 100% of load on single PIA much higher
PSFT Tech PUG How do I know the load is balanced? Web server access log PeopleSoft Performance Monitor PT>=8.44 –Event 150: JVM Status –Event 152: Web Site Status –Event 153: Web Servlet Status
PSFT Tech PUG How do I know the load is balanced?
PSFT Tech PUG JVM Garbage Collection Java Command Line Options –verbosegc Writes to weblogic.log –Xloggc: 0.000: [GC 46591K->3553K(518464K), secs] : [GC 50145K->6662K(518464K), secs] : [Full_GC 46565K->10901K(518464K), secs] : [Full_GC 55273K->16571K(518464K), secs]
PSFT Tech PUG Garbage Collector Log : [Full_GC 55273K->16571K(518464K), secs] –Elapsed time since JVM started –Collection type –Size of live objects before and after GC –Total space available, less permanent objects –Duration of collection
PSFT Tech PUG Timestamps on GC log -XX:+PrintGCTimeStamps But I couldn’t get it to work!
PSFT Tech PUG Other Garbage Collection Options -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled Caveat: These options are not presented as being any kind of panacea, but something to consider. You need to do your own testing. BTW: I got the idea for this from a UKOUG Oracle Application Server SIG!
PSFT Tech PUG XX:+UseConcMarkSweepGC Concurrent Low Pause Collector GC is, as far as possible, concurrent with the execution of the application. –Uses a separate thread App is paused for shorter periods during GC Only effective on multi-processor machines
PSFT Tech PUG XX:+UseParNewGC Parallel young generation GC with concurrent GC –for multiprocessor machines, –enables multi threaded young generation collection –Application is not paused
PSFT Tech PUG XX:+CMSParallelRemarkEnabled Reduces remark pauses
PSFT Tech PUG Default Garbage Collector Individual GC duration
PSFT Tech PUG Parallel Garbage Collector Individual GC duration
PSFT Tech PUG Default Garbage Collector Cumulative GC duration / minute
PSFT Tech PUG Parallel Garbage Collection Cumulative GC duration / minute
PSFT Tech PUG Conclusion Improved GC performance does not have a great effect on Component Performance It does reduce the ‘strange pause’ giving the user a better experience Parallel GC seems to slowly leak memory. –Possible bug in a particular JVM –I have only tested on Windows
PSFT Tech PUG Questions?
PIA Load Balancing, JVMs and Garbage Collection David Kurtz Go-Faster Consultancy Ltd.