Last active
April 21, 2017 19:49
-
-
Save pysysops/04344aea12c8184dd73d3a80e24d2030 to your computer and use it in GitHub Desktop.
Weblogic related gotchas / useful config options
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. | |
================================================================================================= |
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.
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
Pre -Dweblogic.system.StreamPoolSize=0 argument, GC recovering less and less each cycle:
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!