2017-11-02 21 views
0

현재 varnish3에서 varnish4로 마이그레이션 프로젝트를 진행 중입니다. 나는 이해하지 못하는 행동에 직면하고 있습니다.varnish4 vs varnish3 - grace behavior

Varnish3 과 Varnish4에서 모두 사용되는 동일한 구성 파일을 사용하면 히트와 누락과 관련하여 동일한 결과를 얻지 못합니다.

이것은 유예 특성과 관련이있는 것 같지만 어떻게 작동하는지 알 수는 없습니다. 그래서 아래

는 세부 사항에 문제를 설명하는 예입니다

내 varnish3 구성 :

# ---------------------------------------------- 
backend default { 
    .host = "nginx"; 
    .port = "80"; 
} 

sub vcl_fetch { 
    set beresp.grace= 5s; 
    set beresp.ttl = 1s; 
} 

sub vcl_deliver { 
    if (obj.hits > 0) { 
     set resp.http.X-Cache = "HIT"; 
    } else { 
     set resp.http.X-Cache = "MISS"; 
    } 
    set resp.http.X-Cache-Hits = obj.hits; 
} 
# ---------------------------------------------- 

내 varnish4 구성 : (단 하나의 변화 대신 vcl_fetch의 메소드 이름 vcl_backend_response입니다)

# ---------------------------------------------- 
vcl 4.0; 

backend default { 
    .host = "nginx"; 
    .port = "80"; 
} 

sub vcl_backend_response { 
    set beresp.grace= 5s; 
    set beresp.ttl = 1s; 
} 

sub vcl_deliver { 
    if (obj.hits > 0) { 
     set resp.http.X-Cache = "HIT"; 
    } else { 
     set resp.http.X-Cache = "MISS"; 
    } 
    set resp.http.X-Cache-Hits = obj.hits; 
} 
# ---------------------------------------------- 

주어진 리소스의 헤더를 검색하는 약간의 시나리오 결과몇 시간 후 53,691,363,210 :

# ---------------------------------------------- 
Time 14-47-12 
VARNISH4: 
X-Cache: MISS 
X-Cache-Hits: 0 
VARNISH3: 
X-Cache: MISS 
X-Cache-Hits: 0 

Time 14-47-13 
VARNISH4: 
X-Cache: HIT 
X-Cache-Hits: 1 
VARNISH3: 
X-Cache: MISS 
X-Cache-Hits: 0 

Time 14-47-20 
VARNISH4: 
X-Cache: MISS 
X-Cache-Hits: 0 
VARNISH3: 
X-Cache: MISS 
X-Cache-Hits: 0 
# ---------------------------------------------- 

그래서 당신은 모두 V3, 첫 번째 요청에 대한 시나리오에서 볼 수 있듯이 및 V4는 정상입니다 MISS을 반환 . 그러나 1 초 후에 두 번째 요청은 varnish3에 대한 MISS를 반환합니다. 은 나에게 정상이고 varnish4에 대한 HIT는 실제로 이해할 수 없습니다. 이것이 유예 매개 변수와 관련이 있다고 생각 했으므로 7 초 후 ( 캐시에 1 초 이상 응답하고 그레이스에 5 초 초과) greater가 3과 varnish 4 모두 세 번째 요청을 내 시나리오에 추가했습니다. MISS입니다.

그래서 누군가가 나를 이해/해결 방법이 문제를 도울 수 있다면 ... 나를 위해 목적은 varnish3보다 varnish4과 같은 결과를 얻을 수 있습니다 (I은 3 ~ 4 마이그레이션거야 동안)). 나의 현재 해결 방법은 varnish4에 beresp.grace = 1ms의를 설정하는 것입니다,하지만 난 전혀 그런 을하지, 난 내 구성 :(어떤 도움을 매우 극명하게 될 것이다

의 모든에 할 수 없어 ! 미리

감사합니다! :)

답변

2

니스 (4)는 두 번째 요청에서 오래된 객체를 (How objects are stored 참조)를 제공합니다.

Grace mode을 읽고 Understanding Grace using varnishtest으로 재생하는 것이 좋습니다.

+0

첫 번째 답변을 주셔서 감사합니다. 귀하의 링크를 확인하겠습니다.하지만 제 질문은 "Varnish3과 동일한 동작을 얻는 방법"입니다. Varnish3에도 유예 매개 변수가 있기 때문입니다. – user1961659

+0

확인 후, 정확히 같은 동작을 얻는 것이 불가능하다고 생각합니다. "Age"헤더가 conf 마이그레이션의 유효성을 올바르게 검사하기에 충분할 수 있습니다. – user1961659