Jboss AS 7 http thread pool problem
nishant_ag14 Aug 8, 2013 7:27 AMHi,
We are using Jboss AS 7 in domain mode with following threads and web subsystem configuration
Thread subsystem:
<subsystem xmlns="urn:jboss:domain:threads:1.1">
<bounded-queue-thread-pool name="http-executor">
<core-threads count="100"/>
<queue-length count="10"/>
<max-threads count="2000"/>
<keepalive-time time="20" unit="seconds"/>
</bounded-queue-thread-pool>
</subsystem>
Web Subsystem:
<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http" redirect-port="8443" executor="http-executor" max-connections="100000"/>
...
</subsystem>
There are 2 nodes which are exposed for incoming http request using the above configuration.
There is also a CITRIX load balancer (LB) which is getting traffic from application clients and forwarding the requesting to these jboss nodes.
The problem is that we see that even though we have configured 100 core threads in the threadpool the request is processed by a single thread for a long duration and then another thread is picked from the pool.
This creates the problem that clients see long acknowledgement time to serve their request. Any idea why this is happening and how can we tell jboss to use different thread for different http requests.
Please see our application logs with this problem:
21:57:47,107 INFO [PerfLog.DTServlet] (http-executor-threads - 1) The message from UUID[cc9f1b9c-7443-4177-93ea-eecf550325a3] processed in [88] ms
21:57:47,859 INFO [PerfLog.DTServlet] (http-executor-threads - 1) The message from UUID[cc9f1b9c-7443-4177-93ea-eecf550325a3] processed in [88] ms
21:57:48,624 INFO [PerfLog.DTServlet] (http-executor-threads - 1) The message from UUID[cc9f1b9c-7443-4177-93ea-eecf550325a3] processed in [92] ms
21:57:49,631 INFO [PerfLog.DTServlet] (http-executor-threads - 1) The message from UUID[cc9f1b9c-7443-4177-93ea-eecf550325a3] processed in [79] ms
I also observe that the TCP connection between Jboss nodes and LB remains same and is closed after 60 sec of inactivity. If i send a request after the TCP connection has closed then a new thread is picked from the pool.
We see similar TCP connection behaviour in weblogic version of application but we observe that in weblogic the same thread is not used for processing the request that gives better performance.
Any help in this regards is greatly appreciated as this is a major problem for us migrating to Jboss from weblogic.