我正在使用清漆来缓存我网站的内容。它按照预期工作,但存在问题。随机它会返回503错误,这真的很奇怪,因为app服务器还可以,负载低于.8,数据库服务器也可以。以下是我配置的一部分:
backend app05 {
.host = "app05.site.com";
.port = "80";
.connect_timeout = 0.7s;
.first_byte_timeout = 30s;
.between_bytes_timeout = 30s;
.probe = {
.url = "/";
.interval = 5s;
.timeout = 1s;
.window = 5;
.threshold = 3;
}
}
director app_director round-robin {
{ .backend = app01; }
{ .backend = app02; }
{ .backend = app03; }
{ .backend = app04; }
{ .backend = app05; }
}
sub vcl_fetch {
# remove all cookies
# unset beresp.http.set-cookie;
# cache for 12 hours
# set beresp.ttl = 2h;
# Don't allow static files to set cookies.
if (req.url ~ "(?i)\.(png|gif|jpeg|jpg|ico|swf|css|js|html|htm|mp4|flv)(\?[a-z0-9]+)?$") {
unset beresp.http.set-cookie;
set beresp.ttl = 12h;
} else {
set beresp.ttl = 30m;
}
# If the backend server doesn't return properly, don't send another connection to it
# for 60s and try another backend via restart.
#
# https://www.varnish-cache.org/docs/trunk/tutorial/handling_misbehaving_servers.html
# --
if(beresp.status == 500) {
set beresp.saintmode = 5m;
if (req.request != "POST") {
return(restart);
} else {
error 500 "Failed";
}
}
# Allow items to be stale if needed.
set beresp.grace = 1h;
}
我是否还必须添加if beresp.status == 503?
答案 0 :(得分:4)
我解决了这个问题。我只需要增加连接到期的时间并检查重新连接的次数。以下是我添加的行:
host = "app01.site.com";
.port = "80";
.connect_timeout = 1.5s;
.first_byte_timeout = 45s;
.between_bytes_timeout = 30s;
if (req.restarts > 3) {
set beresp.saintmode = 5m;
}