only 503s after a few hours (trunk-4384)

Fernando Papa fernando.papa at liveinteractive.net
Tue Dec 8 18:01:49 CET 2009


Hello,

After a few hours, Varnish trunk-4384 started replying with 503.
New work-load, first day of use.  Previously used Varnish only with internal 
traffic (eg no crazy headers, just carefully crafted requests).

Facts:

* Xeon 2.4 GHz (quad-core, 512KBx4 cache) server.  CentOS 5.4.
* Worked fine for ~9 hours, sending to backend 150+ K requests plus Varnish 
pings.
* Backend is an application server.  Payload is <1 KB plus minimal headers.
* I can still access backend bypassing Varnish.
* Varnish continues pinging backend, and receiving a timely 200 OK every 
time (backend logs).
* req.backend.healthy = true.  Tested with a codepath along the lines 
(req.request == "GET") && (req.url == "/") && (req.backend.healthy), that 
does an 'error 200 "OK"'.
* varnishlog does not output anything at all.  Not even the backend pings.
* Tested every path within vcl_recv.  Exiting with "error" works, but 
"lookup" results in a 503.
* Very low CPU usage.  Sorry, didn't check memory usage before restarting 
it.

CFLAGS='-O2 -fomit-frame-pointer -march=pentium4 -mfpmath=sse' 
 ./configure --prefix=$HOME/local --disable-largefile

$HOME/local/sbin/varnishd -a *:80 -f $HOME/local/etc/varnish/xxx.vcl -p 
obj_workspace=4096 -s malloc,100M -p thread_pools=`grep -c 'model name' 
/proc/cpuinfo`

backend fd1
{
   .host="localhost";
   .port="85";
   .connect_timeout = 1s;
   .first_byte_timeout = 20s;
   .between_bytes_timeout =2s;
   .probe = {
      .request =
         "GET /xxx HTTP/1.1"
         "Host: yyy"
         "Connection: close";
      .timeout = 0.5 s;
      .window = 8;
      .threshold = 3;
   }
}

director fdcluster round-robin
{
   { .backend = fd1; }
}

Restarted Varnish, now it works again.

Any idea?  Anything wrong in the command line?

Thanks,
Fernando.




More information about the varnish-misc mailing list