Varnish Evitando inconsistentemente as páginas do cache

1

Em nossa configuração do verniz, temos uma função vcl_fetch definida da seguinte forma:

if (beresp.ttl > 0s) {
   /* Remove Expires from backend, it's not long enough */
   unset beresp.http.expires;

   /* Set the clients TTL on this object */
   set beresp.http.cache-control = "max-age=900";

   /* Set how long Varnish will keep it */
   set beresp.ttl = 1h;

   /* marker for vcl_deliver to reset Age: */
   set beresp.http.magicmarker = "1";
 }

Em seguida, em vcl_deliver:

if (resp.http.magicmarker) {
   /* Remove the magic marker */
   unset resp.http.magicmarker;

   /* By definition we have a fresh object */
   set resp.http.age = "0";
}

O problema é que, se eu configurar um script (um shell script ou um script php) para acessar a mesma URL, vejo primeiro uma mensagem MISS, seguida por um HIT (tudo bem até agora).

O que eu espero é repetir HITS até que a marca de 1 hora tenha passado, uma MISS na marca de 1 hora, seguida por uma hora de HITs novamente. Em outras palavras, porque estou atingindo a mesma URL repetidamente, ele deve alternar entre HIT e MISS a cada 1 HORA.

Em vez disso, o que vejo é algo assim:

 6/20/2013 6:30:05 - STRING HIT NOT FOUND
 6/20/2013 10:32:11 - STRING HIT NOT FOUND
 6/21/2013 12:33:06 - STRING HIT NOT FOUND
 6/21/2013 2:34:06 - STRING HIT NOT FOUND

Agora são 5:57 (quase 4 horas desde que o HIT não foi encontrado).

Os erros de cache acima aparecem ao redor da marca de meia hora, mas são 4 horas, 2 horas e 2 horas de intervalo e o TTL é definido para 1 hora.

Então eu não entendo porque o objeto está sendo mantido por mais de uma hora e por que ele é despejado em intervalos aparentemente aleatórios. Como posso determinar melhor o que está acontecendo?

A propósito, estou usando o verniz 3, se isso ajudar.

    
por Brad 21.06.2013 / 12:28

1 resposta

1

Assim, o servidor de verniz em questão estava armazenando em cache um site do Drupal 7. No site do Drupal 7, o módulo Drupal Varnish foi configurado e ativado.

O melhor que posso dizer é que limpava o cache periodicamente. Consegui determinar isso usando o seguinte comando e vendo BANs que eu não tinha emitido:

varnishadm -T localhost:6082 -S /etc/varnish/secret ban.list 
Present bans: 1371834738.031740 193 req.http.host ~ www.ourdomain.com && req.url ~ /
    
por 23.06.2013 / 14:46