### Description of problem:
If all threads in a httpd child worker process are saturated with long requests, then all connections in the pool are exhausted, likely leaving none available for additional pings, which then fail with errors like:
[error] (70007)The timeout specified has expired: proxy: ajp: failed to acquire connection for ...
### Steps to Reproduce:
1. Deploy a web application on EAP 6, which just do Thread.sleep() for a while
(for example, 10-15 seconds. just longer than lbstatus_recalc_time, 5 seconds)
~~~
<%
long ms = 15000L;
System.out.println("going to sleep... : " + ms + " ms");
Thread.sleep(ms);
System.out.println("done!");
%>
~~~
2. Repeat sending concurrent requests to the web app via mod_cluster by apache bench
(just exactly same concurrent number to MaxClients setting, or more than MaxClients)
When you set MaxClients to 30, then execute the following:
~~~
ab -c 30 -n 300 http://localhost/example/sleep.jsp
~~~
### Actual results:
You will see the "failed to acquire connection for ..." error message when status update is executed in background.
### Expected results:
No error message.
### Additional info:
https://issues.jboss.org/browse/MODCLUSTER-466
Comment 4Jean-frederic Clere
2015-08-31 08:40:18 UTC
### Description of problem: If all threads in a httpd child worker process are saturated with long requests, then all connections in the pool are exhausted, likely leaving none available for additional pings, which then fail with errors like: [error] (70007)The timeout specified has expired: proxy: ajp: failed to acquire connection for ... ### Steps to Reproduce: 1. Deploy a web application on EAP 6, which just do Thread.sleep() for a while (for example, 10-15 seconds. just longer than lbstatus_recalc_time, 5 seconds) ~~~ <% long ms = 15000L; System.out.println("going to sleep... : " + ms + " ms"); Thread.sleep(ms); System.out.println("done!"); %> ~~~ 2. Repeat sending concurrent requests to the web app via mod_cluster by apache bench (just exactly same concurrent number to MaxClients setting, or more than MaxClients) When you set MaxClients to 30, then execute the following: ~~~ ab -c 30 -n 300 http://localhost/example/sleep.jsp ~~~ ### Actual results: You will see the "failed to acquire connection for ..." error message when status update is executed in background. ### Expected results: No error message. ### Additional info: https://issues.jboss.org/browse/MODCLUSTER-466