backend web node keep-alive option

Dridi Boukelmoune dridi at varni.sh
Mon Nov 13 07:11:25 UTC 2017


On Sat, Nov 11, 2017 at 9:48 PM,  <info+varnish at shee.org> wrote:
> I was observing a behavior of a PHP script on one backend server that got executed/requested
> twice (but not by the client/browser).
>
> The plain script just processes data and only outputs a response until its done. The observed
> behavior is; when first_byte_timeout passes but the script is still processing data, the varnish
> node answers with an 503 and the script gets listed twice in the webserver process list. So, either
> it gets requested on this event again or the TCP connection close triggers an new execution. In any
> case its a bug and because of missing resources to dive into a more deeper analyses, I just disabled
> the enabled keep-alive option of the backend webserver (apache/httpd). The results: it helped to avoid
> a further execution of the script.
>
> The question is: What is the best practice to configure the backend webservers? Do you keep the
> keep-alive option enabled or not?
>
> I'd appreciate hearing your suggestions.

I think you're getting a retry from varnishd, independent from VCL's
return(retry) which only happens on GET/HEAD requests that are
supposed to be side-effect-free and safely retry-able. On top of that
you might be hitting a bug where Varnish retries more than once.
Seeing some log would help confirm this hypothesis.

https://github.com/varnishcache/varnish-cache/pull/2135

Dridi


More information about the varnish-misc mailing list