Como o Varnish lida com a falta de armazenamento?

9

Estou usando o Varnish 3.0.3 (o mais recente até agora), com mais ou menos a instalação padrão, usando o seguinte para armazenamento:

# # Cache file location
VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin
#
# # Cache file size: in bytes, optionally using k / M / G / T suffix,
# # or in percentage of available disk space using the % suffix.
VARNISH_STORAGE_SIZE=4000M
#
# # Backend storage specification
VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}"
#

A maioria das páginas que podem ser armazenadas em cache terá um TTL muito longo. O site com o qual estou trabalhando é enorme e possui milhões de páginas, que não podem caber no tamanho de armazenamento listado acima (4 GB).

Configure para as perguntas:

  • Vamos supor que todo o espaço de armazenamento esteja cheio e nada no cache tenha expirado ainda (meu TTL é de 2 semanas em cada item no cache).

  • Estou assumindo que o Ban Lurker é inútil aqui, porque ele excluirá apenas itens que expiraram e nenhum expirou.

Questões:

  • Dado o cenário acima, o que acontece com o Varnish quando solicitações adicionais chegam para algo que ainda não está no cache? O Varnish faz alguma tentativa de excluir itens mais antigos do cache, independentemente do TTL desses itens? O verniz falha? Aguentar?

  • Se o Varnish não lidar com o cenário, há algo que eu possa fazer para configurá-lo para lidar melhor com o cenário? (Obviamente, eu poderia diminuir o TTL dos itens no cache, mas estou me perguntando se há alguma sugestão adicional).

Estou vendo nesse cenário que o Varnish efetivamente deixa de responder a solicitações. No momento em que isso acontece, não tenho memória ou CPU na caixa.

Obrigado.


Acompanhamento:

Eu também vi esse post

o que me indicou

que parece indicar tudo "simplesmente acontece" ... mas parece que realmente envia uma solicitação PURGE para o URL, o que pode exigir a adição do material apropriado à sua VCL (consulte https://www.varnish-cache.org/ docs / 3.0 / tutorial / purging.html )

Vou tentar isso e acompanharei se isso resolver o problema.

user174548
fonte
3
No que diz respeito a nós, também usamos o Varnish para armazenar em cache grandes quantidades de dados, especificamente, um repositório de imagens de cerca de 2,8 milhões de imagens com um arquivo Varnish de 30 GB. O preenchimento de verniz preenche os 30 GB e, assim que novas coisas são adicionadas ao cache, exclui a entrada do cache que "não foi acessada por mais tempo". Toda entrada de cache tem um horário associado, é o último registro de data e hora de acesso. A entrada com o menor carimbo de data e hora do último acesso é exibida. (Btw: Por que armazenar em cache imagens !? Porque o HDD é muito lento para servi-los e SSDs para tudo custa muito)
sinni800

Respostas:

1

De acordo com a sua configuração, você parece usar o disco para armazenar o cache de verniz.

Isso não é recomendado ( para desempenho ), a menos que você tenha um bom motivo (como sinni800).

Tente usar a RAM para armazenar o cache de verniz ("malloc" em vez de "arquivo") e reproduzir o problema.


fonte