Hello

Thank you for your response. However, I'm still a bit fuzzy when it comes
to the keepalive and timeout attribute.

I understand keepalive=On attribute by itself but in combination with
timeout is where I'm unclear.

In the scenario that I presented with following:

   -  timeout=3600 keepalive=On attributes
   -  backend server taking a long time processing the request sent by
   client ( note: no streaming any data from server yet since it's busy
   processing the request, let's say processing time on server is 4 hrs )
   -  OS settings are set to send TCP Keep alive packet in every 2 mins


My guess:

   - With TCP keep alive probes sent and ACK between 'Apache httpd' machine
   and 'Backend server' machine, we can be assured that there's no inactive or
   idle TCP connection.
   - But, from the 'Apache Httpd' application point of view, it hasn't
   received the data from the server in 1 hr(3600), and therefore 'Apache
   Httpd' will initiate a timeout. When the 'Backend Server' is ready in 4 hrs
   to stream the response back, there's no ' Apache Httpd' client to receive
   the response.

Please do correct me if I'm thinking this incorrectly,

Appreciate all the help

Thanks.


On Wed, Oct 13, 2021 at 10:03 AM Dino Ciuffetti <d...@tuxweb.it> wrote:

> The global "Timeout" parameter is needed to set the length of time Apache
> httpd will wait for I/O in various circumstances.
> https://httpd.apache.org/docs/2.4/mod/core.html#timeout
>
>
> The "keepalive" attribute of ProxyPass can be used to fool your network
> equipments (like intermediate firewalls) to mantain the tcp connection
> between apache and its backends open even when no data is passing from and
> to the wires. Some network equipment like firewalls tend to drop inactive
> (silent) connections too early (from my experience ~30 min but your mileage
> may vary).
>
> The "timeout" attribute of ProxyPass is the number of seconds Apache httpd
> waits for data sent by / to the backend. So in your case apache will close
> a inactive connection with the backend in 1hr, but while your backend
> continue to stream data the connection will be kept open. Yes, it's a sort
> of application timeout.
>
> There is also the "connectiontimeout" attribute of ProxyPass that will
> consider a new TCP connection with the backend not valid if it takes the
> specified time to complete (TCP SYN + SYN/ACK + ACK) so it can be retried
> earlier.
>
>
>
>
> 13 ottobre 2021 16:22, "Usha Nayak" <usha...@gmail.com
> <usha...@gmail.com?to=%22usha%20nayak%22%20%3cusha...@gmail.com%3E>>
> wrote:
>
> Hello
> Need help in understanding the highlighted parameters:
> ProxyPass "/example" "http://backend.example.com"; timeout=3600
> keepalive=On
> keepalive parameter - As I understand relates to TCP or socket keep alive
> probes that are sent to prevent idle connection.
> [image: image.png]
> My confusion is :
>
> Assuming the backend server takes 4 hrs to process a request and I have
> 'keepalive on' in Apache httpd with the OS setting to send tcp probes every
> 2 minutes. Backend server and Apache httpd are sending TCP keep alive
> packets to indicate the socket connection is not idle.
>
>
>    - In this case, would the 'apache httpd' close the connection in 1 hr
>    ( timeout = 3600) because the 'apache httpd' didn't get the http data? Is
>    this timeout 'apache httpd' application timeout ?
>
> Appreciate help.
> Thanks.
>
>
>
>

Reply via email to