Skip to content

Instantly share code, notes, and snippets.

@pysysops
Last active April 21, 2017 19:49
Show Gist options
  • Save pysysops/04344aea12c8184dd73d3a80e24d2030 to your computer and use it in GitHub Desktop.
Save pysysops/04344aea12c8184dd73d3a80e24d2030 to your computer and use it in GitHub Desktop.
Weblogic related gotchas / useful config options
1. On Linux / WLS 12c there is a problem with the TCP unicast work manager blocking, it causes nodes in a cluster to failover. Add:
-Dweblogic.unicast.HttpPing=true
To server start args. It's a known / documented issue: https://docs.oracle.com/cd/E24329_01/doc.1211/e26593/issues.htm#WLSRN182
2. Memory leaks. If you use RMI which you probably do and suffer from Memory leaks, forget tuning the app code (it's Java,
it'll always have memory leaks) Take a heap dump adn run it through jmap or create diffs from 2. If you see this class pop
up in retained heap or memory leak suspects: weblogic.rjvm.ConnectionManage Add:
-Dweblogic.system.StreamPoolSize=0
To server start args. It's not documented anywhere but from Oracle Support:
=================================================================================================
Analyzed the heap dump and found the below Problem suspect:
2,933 instances of "weblogic.rjvm.ConnectionManagerServer", loaded by "sun.misc.Launcher$AppClassLoader @ 0x6c00075d8" occupy
1,942,365,888 (77.22%) bytes. These instances are referenced from one instance of
"weblogic.utils.collections.ConcurrentWeakHashMap$Segment[]", loaded by "sun.misc.Launcher$AppClassLoader @ 0x6c00075d8"
In my research I found that weblogic.rjvm.ConnectionManager will be used for managing a pool of steams for replication/serialization ....
as it uses a pool it can be considered as leak because streams are not dropped after the object serialization.
The property weblogic.system.StreamPoolSize when set to 0 disable the cache pooling, of course that will consume less memory in
particular if big objects to serialize.
Please set the property :-Dweblogic.system.StreamPoolSize=0 and test again.
=================================================================================================
@pysysops
Copy link
Author

Pre -Dweblogic.system.StreamPoolSize=0 argument, GC recovering less and less each cycle:

wls_gc_weblogic rjvm connectionmanager

Nightly restarts had been accepted as a way of life (sigh..), -Dweblogic.system.StreamPoolSize=0 argument put live on 21/10. GC less often and reclaims more heap each cycle! Restarts are not a solution!

wls_gc_weblogic rjvm connectionmanager_streampoolsize0

@kotari4u
Copy link

Thanks a ton. We are also facing the same problem in production and we would like to give a try with -D arg. We have not seen any reference for this other than this blog.

@pysysops
Copy link
Author

Missed this comment @kotari4u. How did it work out?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment