httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christian Georg <m...@christiangeorg.de>
Subject [users@httpd] Question on correlation bewteen timeout types (Acquire, connection, proxytimeout and timeout)
Date Fri, 24 Jun 2016 10:42:31 GMT
Hi all,

I am currently trying to understand the different timout parameters a bit better and how they
interact.  We are using apache httpd 2.4 mod_proxy on a centos system as a reverse proxy with
mod_proxy_balancer.

Here is the relevant section from our setup:

Define CONNECTION_OPTIONS "min=10 max=500 smax=30 acquire=5000 connectiontimeout=5 disablereuse=off
keepalive=off timeout=29 ttl=10 retry=60"
        <Proxy balancer://balancer location/>
                BalancerMember https://Server1/   ${CONNECTION_OPTIONS}
                BalancerMember https:// Server2/  ${CONNECTION_OPTIONS} status=+H
                ProxySet lbmethod=bytraffic
        </Proxy>

What I am trying to understand is how the different timeout parameters interact and at what
time a request might have been sent to the backend.

Can you confirm/correct the following understanding and answer the questions?

Acquire:
Acquire timeout is a timeout send to the client if the connection pool is very busy and apache
did not even start to process the request. If this timeout happens the request did not reach
the proxy and I can be sure no request is sent to the backend. In this case, the client will
receive an http 503. Should I see these kind of requests within the access log of the proxy
virtual host?

Connectiontimeout:
Connectiontimeout is a timeout that happens during handshake between the apache proxy and
the backend. As we are using SSL between the proxy and the backend this can happen during
SSL Handshake. If this timeout occurs the request was trying to be processed by the proxy
and will appear in the access log with an http code of 504. If this timeout occurs, then I
can be sure that the request has not been sent to the backend. Can any other http code occur
from time timeout and is there even a small chance that we might have send the request to
the backend?

ProxyTimeout and timeout:
Timeout and proxy timeout will both occur only if a successful connection to the backend was
established and if the request has been sent to the backend. Hence I should the see request
in both logfiles. If the server does not respond within the time defined in this timeout I
would expect an http 502 to be created. Is this correct? The Part I would like to understand
is: does the timeout include the acquire time and connection time or is it independent?
Let's take an example: If it takes 4 seconds to acquire a connection and another 4 seconds
to connect to the backend will the will the client see a timout after 29 seconds (timeout
includes acquire and connection)  will the client see a timeout after 33 seconds (timout does
nto include acquire time but toes include connection time) or will the client see a timeout
after 37 seconds (timeout will only start to after the request was send).

Is there any reason to set the proxytimeout to another value than the timeout?

One related question: We are currently logging the http codes using "%>s" from my understanding
this is the http code we are sending in the response to the client. Is this correct and is
there a way to also log the http code we have received from the backend we are proxying to?
I would expect the http code from the backend to be empty if a timeout occurs in our systems

Thanks in advance

Chris




Mime
View raw message