[Varnish] #951: varnish stalls connections on high traffic to non-cacheable urls

Varnish varnish-bugs at varnish-cache.org
Fri Jul 1 23:20:40 CEST 2011

#951: varnish stalls connections on high traffic to non-cacheable urls
 Reporter:  tttt                 |        Type:  defect  
   Status:  new                  |    Priority:  normal  
Milestone:  Varnish 2.1 release  |   Component:  varnishd
  Version:  2.1.5                |    Severity:  major   
 Keywords:                       |  

Comment(by kb):

 I believe this is actually expected behavior.  Varnish wants to download
 these objects and store them in cache before letting subsequent requests
 "in" to the object.  This is common in two situations I've seen:

 1. Your web server takes longer to respond than your .first_byte_timeout,
 and thus never makes it into Varnish.  All requests pile up on a linear
 line of requests that each take .first_byte_timeout seconds.

 2. Your web server is taking a "long time" to reply, and the object is not
 cacheable.  A similar serialization takes place, orthogonal to

 Varnish doesn't know whether the object is cacheable or not until it
 receives the response, and I don't know of a way to tell Varnish whether
 an object is cacheable /before/ the request happens.

 My only suggestion for a "fix" would be to add something like this to your

 if ( req.url ~ "/your/very/slow/URLs" ) {
     set req.hash_ignore_busy = true;

 That should allow incoming requests to open new requests to your backend
 (removing the serialization).

 But honestly, if you have painfully slow, non-cacheable resources, it
 might be better to route those directly to the backend(s) rather than
 clutter up Varnish.  Or perhaps separate those requests into different
 servers along functional lines.



Ticket URL: <http://www.varnish-cache.org/trac/ticket/951#comment:2>
Varnish <http://varnish-cache.org/>
The Varnish HTTP Accelerator

More information about the varnish-bugs mailing list