Weblogic uses special threads, called Muxers, to read incoming requests on the servers.
Those threads' main responsability is to read the request and pass the work to the correspondent Execute Thread.
WLS allocates a percentage of execute threads from the self-tuning thread pool to be Muxer Threads.
By default this value is 33% of the thread pool and cannot exceed 50%.
If you need to manually tune the number of socket reader threads, keep reading after the jump:
This configuration is made in the Administration Console:
a. In the left pane of the Console, expand Environment > Servers.
b. On the Summary of Servers page, select the server instance for which you will configure the number of available socket readers.
c. Select Configuration > Tuning and update Socket Readers.
Sometimes people feel they need to fine tune the number of available socket readers and manually assign a arbitrary number to the Muxer Threads, instead on a percentage.
It is as simple as pass this argument to the JAVA_OPTIONS:
-Dweblogic.SocketReaders=NUMBER_OF_THREADS
If you want to have, let's say, 10 MuxerThreads, -Dweblogic.SocketReaders=10, and take a thread dump on your running WLS process, you should see ten of those:
"ExecuteThread: '0' for queue: 'weblogic.socket.Muxer'" id=25 idx=0x58 tid=4820 prio=5 alive, in native, daemon
at weblogic/socket/NTSocketMuxer.getIoCompletionResult(Lweblogic/socket/NTSocketMuxer$IoCompletionData;)Z(Native Method)
at weblogic/socket/NTSocketMuxer.processSockets(NTSocketMuxer.java:81)
at weblogic/socket/SocketReaderRequest.run(SocketReaderRequest.java:29)
at weblogic/socket/SocketReaderRequest.execute(SocketReaderRequest.java:42)
at weblogic/kernel/ExecuteThread.execute(ExecuteThread.java:145)
at weblogic/kernel/ExecuteThread.run(ExecuteThread.java:117)
at jrockit/vm/RNI.c2java(IIIII)V(Native Method)
-- end of trace
This should work with WLS 8.1.x up to 10.3.4.
Remember to use this with caution.
Links:
WLS Tuning
Tuning Socket Readers
0 comments:
Post a Comment