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. | |
================================================================================================= |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.