https://issues.apache.org/bugzilla/show_bug.cgi?id=56703

--- Comment #2 from Martin Knoblauch <kn...@knobisoft.de> ---
After some guessing and playing around, I think I have isolated my "failure
case".

Necessary condition is than "connection_pool_timeout" is enabled in mod_jk:

worker.template.connect_timeout=15000

and that the backend Tomcats(s) are using a "connectionTimeout" on the AJP
connector:

    <Connector port="9397" protocol="AJP/1.3"
        connectionTimeout="30000"
        maxThreads="300"
        minSpareThreads="10"
        redirectPort="8443" />


Given the "right" timing, one can find the following in "mod_jk.log":

###########
[Wed Aug 13 14:21:05.827 2014] [22249:139749745399552] [info]
ajp_send_request::jk_ajp_common.c (1608): (lpsdm75-2) failed sending request,
socket 27 is not connected any more (errno=0, connected=2)
[Wed Aug 13 14:21:05.827 2014] [22249:139749745399552] [info]
ajp_send_request::jk_ajp_common.c (1681): (lpsdm75-2) all endpoints are
disconnected, detected by connect check (1), cping (0), send (0)
###########

I assume, that in this case the backend has closed the connection due to the
connctionTimeout and mod_jk still has to find out about it.

The code around line 1608 does this:

##########
        if (jk_is_socket_connected(ae->sd, l) == JK_FALSE) {
            ae->last_errno = errno;
            jk_log(l, JK_LOG_INFO,
                   "(%s) failed sending request, "
                   "socket %d is not connected any more (errno=%d,
connected=%d)",
                   ae->worker->name, ae->sd, ae->last_errno,
ae->worker->s->connected);
            ajp_abort_endpoint(ae, JK_FALSE, l);
            err = JK_TRUE;
            err_conn++;
        }
##########

If "jk_is_socket_connected" decides that the socket is no longer connected, it
closes the socket, but can of course not decrement the "connected" counter. As
a result, the statistics are never decaying for the workers.

Adding "ae->worker->s->connected--" below "ajp_abort_endpoint" fixes the issue
for me.

A patch is included. In addition to the "fix", it also enables the logging in
line 1608 and some other logging in the maintenance loop.

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to