How HTTP Requests are Processed in the Dispatcher Node
You may be aware by now that when you are calling 5<Instance Number>00 port, you are sending the request on dispatcher node's http port. The call is routed from that point to the server node where the application logic processes the request. This post briefly discusses what happens inside.
Let's assume that there is a flood of requests made to the port. The requests are queued up in the socket queue. These requests are listened to at the ServerSocketListener for http port. The socket queue and the listeners are handled by the Ports Manager. The HTTP Provider service provides the port and other information such as keepalive timeout and the number of listeners (AcceptingThreadsCount)
The request picked up by the listener will be in the waitingTasks queue (big pile of files in the diagram) until it is picked up by a System Thread for processing. The Connection Manipulator wraps the request with a TCPRunnableConnection and sends it to the HTTP protocol processor.
The Cluster Manager then sends the request (through Session Communication) to the Server node which ultimately processes the request.
The Cluster Manager is also responsible for managing cluster communication via Message Server or without involving MS for lazy communication. These aspects are not discussed here.
In order to scale the abilities to handle HTTP requests up, the following parameter play a vital role: AcceptingThreadsCount, SocketQueue, KeepAliveTimeout and System Threads. An increment in these parameter will obviously result in an increase in memory usage.
In order to scale the abilities to handle HTTP requests up, the following parameter play a vital role: AcceptingThreadsCount, SocketQueue, KeepAliveTimeout and System Threads. An increment in these parameter will obviously result in an increase in memory usage.
Comments
Post a Comment