503 error from varnish
    Tim Dunphy 
    bluethundr at gmail.com
       
    Sun Jul  5 02:54:28 CEST 2015
    
    
  
Hey guys,
 I've setup my wiki to be delivered through varnish. My first breakthrough
in getting this to work was to allow for http basic auth to pass through
varnish so the user will be prompted to login. This is working quite well
at this point.
But my current problem is that I've been able to get the main page to the
site cached, and a few others. But when I click to like the 4th or 5th page
on the wiki that I want to cache through varnish, everything comes to a
halt. I get a 503 - service unavailable error, instead of varnish going to
the web server to retrieve the page I had clicked on.
In my varnishlog, I'm seeing the following which results in an error:
10 SessionOpen  c 10.10.10.25 35852 :80
   10 ReqStart     c 10.10.10.25 35852 1369002554
   10 RxRequest    c GET
   10 RxURL        c /index.php/Affluencers
   10 RxProtocol   c HTTP/1.1
   10 RxHeader     c Host: wiki.example.com
   10 RxHeader     c Cache-Control: max-age=0
   10 RxHeader     c Authorization: Basic YWRtaW46RHVrMzBmWmgwdQ==
   10 RxHeader     c Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
   10 RxHeader     c User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X
10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130
Safari/537.36
   10 RxHeader     c Referer: http://wiki.example.com/index.php/NBCUniversal
   10 RxHeader     c Accept-Encoding: gzip, deflate, sdch
   10 RxHeader     c Accept-Language: en-US,en;q=0.8
   10 RxHeader     c X-Forwarded-For: 47.18.111.100
   10 RxHeader     c Connection: close
   10 VCL_call     c recv lookup
   10 VCL_call     c hash
   10 Hash         c /index.php/Affluencers
   10 Hash         c wiki.example.com
   10 VCL_return   c hash
   10 VCL_call     c miss fetch
   10 FetchError   c no backend connection
   10 VCL_call     c error deliver
   10 VCL_call     c deliver deliver
   10 TxProtocol   c HTTP/1.1
   10 TxStatus     c 503
   10 TxResponse   c Service Unavailable
   10 TxHeader     c Server: Varnish
   10 TxHeader     c Content-Type: text/html; charset=utf-8
   10 TxHeader     c Retry-After: 5
   10 TxHeader     c Content-Length: 419
   10 TxHeader     c Accept-Ranges: bytes
   10 TxHeader     c Date: Sun, 05 Jul 2015 00:42:16 GMT
   10 TxHeader     c X-Varnish: 1369002554
   10 TxHeader     c Age: 0
   10 TxHeader     c Via: 1.1 varnish
   10 TxHeader     c Connection: close
   10 TxHeader     c X-Cache: MISS
   10 Length       c 419
   10 ReqEnd       c 1369002554 1436056936.048977137 1436056936.049291372
0.000086308 0.000152111 0.000162125
   10 SessionClose c error
   10 StatSess     c 10.10.10.25 35852 0 1 1 0 0 0 272 419
I'm not sure how to interpret that to be honest. But I'd like some help
resolving this issue. :)
One thing that I considered is that I may be running out of memory while
trying to cache the site.
The varnish host itself is only a 1GB VM with 40GB of disk space.
Here's my varnish system config:
grep -v '#' /etc/sysconfig/varnish
NFILES=131072
MEMLOCK=82000
NPROCS="unlimited"
RELOAD_VCL=1
VARNISH_VCL_CONF=/etc/varnish/default.vcl
VARNISH_LISTEN_PORT=80
VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1
VARNISH_ADMIN_LISTEN_PORT=6082
VARNISH_SECRET_FILE=/etc/varnish/secret
VARNISH_MIN_THREADS=50
VARNISH_MAX_THREADS=1000
VARNISH_THREAD_TIMEOUT=120
VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin
VARNISH_STORAGE_SIZE=10G
VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}"
VARNISH_TTL=120
DAEMON_OPTS="-a ${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT} \
             -f ${VARNISH_VCL_CONF} \
             -T
${VARNISH_ADMIN_LISTEN_ADDRESS}:${VARNISH_ADMIN_LISTEN_PORT} \
             -t ${VARNISH_TTL} \
             -w
${VARNISH_MIN_THREADS},${VARNISH_MAX_THREADS},${VARNISH_THREAD_TIMEOUT} \
             -u varnish -g varnish \
             -S ${VARNISH_SECRET_FILE} \
             -s ${VARNISH_STORAGE}"
And this is my very simple VCL file:
backend web1 {
  .host = "10.10.10.25";
  .port = "80";
  .connect_timeout = 30s;
  .first_byte_timeout = 30s;
  .between_bytes_timeout = 30s;
  .max_connections = 70;
  .probe = {
  .request =
   "GET /healthcheck.php HTTP/1.1"
   "Host: wiki.example.com"
   "Connection: close";
   .interval = 10m;
   .timeout = 60s;
   .window = 3;
   .threshold = 2;
   }
}
backend web2 {
  .host = "10.10.10.26";
  .port = "80";
  .connect_timeout = 30s;
  .first_byte_timeout = 30s;
  .between_bytes_timeout = 30s;
  .max_connections = 70;
  .probe = {
  .request =
   "GET /healthcheck.php HTTP/1.1"
   "Host: wiki.example.com"
   "Connection: close";
   .interval = 10m;
   .timeout = 60s;
   .window = 3;
   .threshold = 2;
   }
}
director www round-robin {
  { .backend = web1;   }
  { .backend = web2;  }
 }
sub vcl_recv {
    set req.backend = www;
    return (lookup);
}
sub vcl_fetch {
      set beresp.ttl = 3600s;
      set beresp.grace = 4h;
      return (deliver);
}
sub vcl_deliver {
     if (obj.hits> 0) {
      set resp.http.X-Cache = "HIT";
     } else {
        set resp.http.X-Cache = "MISS";
     }
 }
So I'm wondering if I'm anywhere near the mark that I could be running out
of memory when trying to cache pages to my wiki site.
I'd really appreciate any feedback you guys may have!
Thanks,
Tim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20150704/548b070e/attachment.html>
    
    
More information about the varnish-misc
mailing list