Weblogic Server 12.1.2 Performance Issue Due To weblogic.socket.NIOSocketMuxer
Weblogic server 12.1.2 in a runnable state consuming high CPU resources.
Error:
"LDAPConnThread-579 ldaps://ldapserver.us.oracle.com:636" daemon prio=10 tid=0x00000000041f6800 nid=0x56d7 runnable [0x00007f9b6b9f8000]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.IOUtil.drain(Native Method)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:90)
- locked <0x000000078a2f6e48> (a java.lang.Object)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
- locked <0x000000078a2f6b48> (a sun.nio.ch.Util$2)
- locked <0x000000078a2f6b38> (a java.util.Collections$UnmodifiableSet)
- locked <0x000000078a2f6910> (a sun.nio.ch.EPollSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
at weblogic.socket.NIOSocketMuxer$NIOInputStream.readInternal(NIOSocketMuxer.java:815)
at weblogic.socket.NIOSocketMuxer$NIOInputStream.read(NIOSocketMuxer.java:759)
at weblogic.socket.NIOSocketMuxer$NIOInputStream.read(NIOSocketMuxer.java:742)
at weblogic.socket.JSSEFilterImpl.readFromNetwork(JSSEFilterImpl.java:462)
at weblogic.socket.JSSEFilterImpl.read(JSSEFilterImpl.java:424)
at weblogic.socket.JSSESocket$JSSEInputStream.read(JSSESocket.java:64)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
- locked <0x000000079c2dc630> (a java.io.BufferedInputStream)
at netscape.ldap.ber.stream.BERElement.getElement(Unknown Source)
at netscape.ldap.LDAPConnThread.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
Fix:
In this case, as customer was using Linux x86-64, changing the MuxerClass from weblogic.socket.NIOSocketMuxer to weblogic.socket.PosixSocketMuxer worked.
In WLS Admin Console
Go to Environment > Servers > Server Name > Tuning, under Advanced, set the Muxer Class based on the OS and Reboot the server.
Solaris/HP-UX Native Muxer : weblogic.socket.DevPollSocketMuxer
POSIX Native Muxer : weblogic.socket.PosixSocketMuxer
Windows Native Muxer : weblogic.socket.NTSocketMuxer
Java Muxer : weblogic.socket.JavaSocketMuxer
You may also set the above in the Weblogic startup scripts via the JAVA_OPTIONS: