Troubleshooting is one of the vital areas in Weblogic server administration. Whether you are going to work as a support guy or Weblogic administrator, you should have good understanding of request flow like how a request is accepted and processed by the Weblogic server. It’s equally important if you are doing some troubleshooting related with thread and queues. So here I am going to explain basic concept of request flow, where I will explain how requests are accepted and processed by the Weblogic Server.
I am assuming you have basic understanding of thread & queues. If you don’t have then learn few basics of same and then you would be able to understand this article properly.
Few major components of Weblogic Server to understand complete flow are –
· · Listen Port
· · Listen Thread
· · Socket Muxer
· · Execute Thread (or simply referred as Thread)
So here is the basic flow
· We know that we assign a Listen Port to each and every server whether it’s an admin server or managed server.
· Whenever we start a server, it binds a Listen Thread to the Listen Port to listen for the incoming requests.
· Whenever a server receives any request on the assigned listen port, it takes and assigned request to the Listen Thread
· Listen Thread takes the requests and handover it to the Socket Muxer
· Socket Muxer takes the request and handover same to the execute queue (or to a work manager if configured)
· One of the available Execute Thread pick the request from execute queue to process, that execute thread process the request and freed for other new requests once processed the current request.
Each Execute Thread execute the request and unavailable for other requests until it will complete the current request. Maximum time to process the current request is controlled by “Max Stuck Thread Time” parameter value, which is 600 seconds by default that means a thread will try to process the current request continue for 600 secs (5 minutes) max and if request doesn’t completed in 600 secs the Thread will declare as STUCK.
So generally during troubleshooting or monitoring if you see the Execute Queue length is getting increased consistently, that means your threads are working for long or got STUCK and not getting freed to take new requests and because you Listen Thread & Socket Muxer are still taking the new requests and assigning to the Execute Queues, so you will see queue length is increasing.
More on Socket Muxers
Socket Muxer are software module which is used to read incoming requests and put into execute queues.
There two types of Muxers –
·
· Java Base Muxers
· · Native Muxers
Java base used pure Java to read from the sockets however Native use platform specific native libraries to read from socket. By default Native Muxer are enabled by default because it gives the good performance due to platform specific libraries. Sometimes Java base muxers required to enable due to certain issues, You can switch between both from admin console (Click on Server > Configurations > Tuning, select or deselect Enable Native IO option)
For Native muxers, Weblogic by default defined a certain % (not sure but might be 33%) of threads to act as Socket Muxer Threads and rest of the servers act as Execute Threads however for Java base muxers you can define from the admin console.
Comments
Post a Comment