2012-06-13 74 views
2

我使用清漆緩存我的網站的內容。它按照它的設想工作,但有一個問題。隨機地,它返回一個503錯誤,這真的很奇怪,因爲應用程序服務器正常,負載低於.8,數據庫服務器也正常。這裏是我的配置的一部分:清漆3.0返回503錯誤

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 if beresp.status == 503嗎?

+0

從congfig文件很難說。試着用varnish_log檢查日誌嗎? – ivy

回答

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; 
}