httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jim Jagielski <...@apache.org>
Subject Re: More accurate logging of requests per connection
Date Fri, 19 Sep 2008 15:18:45 GMT
A better interpretation would be, I think, the number of keepalive
requests on that connection. So a '1' would be the 1st keepalive
request, 2 would be the 2nd, etc... So a '0' would be the
initial request, and would be applicable whether keepalives
are enabled or not. This would make the logic simpler.

On Sep 16, 2008, at 1:56 PM, Dan Poirier wrote:

> I recently contributed a new %k log format that is intended to log  
> how many requests have been handled on the current connection.  It  
> does this by logging the value of conn->keepalives.
>
> However, conn->keepalives isn't, strictly speaking, the number of  
> requests the connection has handled.  If keepalives are disabled,  
> it's zero.  It's also not incremented when the request count reaches  
> MaxKeepAliveRequests, so with e.g. MaxKeepAliveRequests 3, it logs  
> 1,2,3,3.
>
> The attached patch adjusts the value logged, so it's always 1 if  
> keepalives are disabled, and if it's the last request (conn- 
> >keepalive == AP_CONN_CLOSE), we add one so the values logged are  
> 1,2,3,4 instead of 1,2,3,3.
>
> There's one remaining problem.  There are some error paths which set  
> conn->keepalive to AP_CONN_CLOSE after conn->keepalives has already  
> been incremented, and in that case, this logging code will log a  
> value that's one too many.  I don't think that's a terrible problem,  
> but I'd welcome suggestions on how to catch that case.
>
> Thanks.
> Dan Poirier
> poirier@pobox.com
>
>
>
> Index: modules/loggers/mod_log_config.c
> ===================================================================
> --- modules/loggers/mod_log_config.c	(revision 693854)
> +++ modules/loggers/mod_log_config.c	(working copy)
> @@ -697,7 +697,28 @@
>
> static const char *log_requests_on_connection(request_rec *r, char *a)
> {
> -    return apr_itoa(r->pool, r->connection->keepalives);
> +    int num_requests;
> +    if (!r->server->keep_alive) {
> +        num_requests = 1;
> +    } else if (r->connection->keepalive == AP_CONN_CLOSE) {
> +        num_requests = r->connection->keepalives + 1;
> +    } else {
> +        num_requests = r->connection->keepalives;
> +    }
> +    return apr_itoa(r->pool, num_requests);
> }
>
> /*****************************************************************


Mime
View raw message