Varnish 503错误

网站中应用了varnish,若没出现过503错误,可以说要么是网站流量与压力不大或从一开始就应用了解决503错误的方案

(新浪微博,前不久在迁移时,也出现过^_^)
那么倒底什么是503错误呢
503(服务不可用)服务器目前无法使用(由于超载或停机维护)。通常这是瞬间状态,刷新一下又好了
varnish server 返回异常信息如下

一、什么原因导致503错误
  下面列出常见几种类型
  1. 服务器上相关应用停止或没有了
  2. 请求超时
  3. 对请求响应时间超时
  4. 服务器本身问题
  5. 其他
二、解决方案
  针对上面几个原因,提出解决方法
  1. 检查应用:
     1)到实际Web Server上检查web应用程序是否存在
     2)web 应用程序是否运行正常
  2. 请求超时,这里指域名解析与路由、网络连接建立时间
     设置适当超时时间
     关键两个参数 connect_timeout,http_req_hdr_len
     如 connect_timeout=20s http_req_hdr_len=8192
  3. 响应超时,与包括响应时间,响应内容大小等主要参数有关
     可设置两个参数 http_resq_hdr_len=8192, first_byte_timeout=60s
  4.服务器本身问题
    需检查系统日志,如apache 日志
  5.其他情况,如排查所有F5b的负载均衡策略,关闭cookie

三、varnish相关参数的设置
    可以在backend 定义中设置,如
   backend mydomain{
    .host = "127.0.0.4";
    .port = "80";
    .connect_timeout = 600s;
    .first_byte_timeout = 600s;
    .between_bytes_timeout = 600s;
   }
  但从实际结果看,有时在vcl脚本中的设置,可能不生效
  所以可考虑在运行参数中增加这些设置
  如,varnishd  xxxx -p connect_timeout=20s
  到这里有人可能会有疑问,为什么要设置这些值,Varnish没有默认值吗
  实际是有默认值,但有个别参数值需要考虑实际情况,比如connect_timeout默认值为0.7s
  若你的网络环境中,无法保证每次请求connect 时间都在 0.7s以内,那么就需要调整这个参数值

 

posted @ 2013-06-13 15:09  kcen  阅读(1409)  评论(0编辑  收藏  举报