Adjusting keep-alive timeout of backend-connections

Kristian Grønfeldt Sørensen ksorensen at
Mon Oct 4 18:16:24 CEST 2010


Is there any way of configuring how long a keep-alive connection to a
backend server will be kept open? 

When load-testing my Varnish-2.1.3 setup I see intermittent 503-errors.
arnishlog tells me that it is caused by a HTTP read error (connection

   98 FetchError   c http read error: 104 

(Full log of the request is shown below.)
As far as I can understand, this error happens because the
backend-server closed the connection at the same time that Varnish sent
the request. I suspect errors like these will disappear with 2.1.4, as I
believe this is the same problem reported in issue #749, which have been
fixed in 2.1.4 by retrying on a new connection. However, my preferred
way of dealing with this would be to configure the keep-alive timeout of
backend-connection to be slightly lower than the configured timeout of
the backend server, so that Varnish will always be the one which closes
the connection (assuming that the backend server does not prematurely
close the connection). This way I should be able to avoid restarting the
request. Is there an easy way of achieving this with 2.1.3?

Entire request:

   98 ReqStart     c 35632 788531137
   98 RxRequest    c POST
   98 RxURL        c /my/url
   98 RxProtocol   c HTTP/1.1
   98 RxHeader     c Connection: keep-alive
   98 RxHeader     c Accept-Encoding: gzip,deflate
   98 RxHeader     c Cache-Control: no-cache
   98 RxHeader     c User-Agent: Mozilla/5.0 (X11; U; Linux sh4; rv:1.7.12) Gecko/20100326 Kreatel
   98 RxHeader     c Pragma: no-cache
   98 RxHeader     c Content-Type: text/plain
   98 RxHeader     c Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
   98 RxHeader     c Keep-Alive: 300
   98 RxHeader     c Content-Length: 228
   98 RxHeader     c Host:
   98 VCL_call     c recv pass
   98 VCL_call     c hash hash
   98 VCL_call     c pass pass
   98 Backend      c 95 defaultdirector backend1
   98 FetchError   c http read error: 104
   98 VCL_call     c error deliver
   98 VCL_call     c deliver deliver
   98 TxProtocol   c HTTP/1.1
   98 TxStatus     c 503
   98 TxResponse   c Service Unavailable
   98 TxHeader     c Server: Varnish
   98 TxHeader     c Retry-After: 0
   98 TxHeader     c Content-Type: text/html; charset=utf-8
   98 TxHeader     c Content-Length: 418
   98 TxHeader     c Date: Mon, 04 Oct 2010 09:55:29 GMT
   98 TxHeader     c X-Varnish: 788531137
   98 TxHeader     c Age: 0
   98 TxHeader     c Via: 1.1 varnish
   98 TxHeader     c Connection: close
   98 Length       c 418
   98 ReqEnd       c 788531137 1286186129.917763948 1286186129.930047989 0.002107859 0.012248993 0.000035048

Kristian Sørensen

More information about the varnish-misc mailing list