¿Cómo trata Varnish con quedarse sin almacenamiento?

9

Estoy usando Varnish 3.0.3 (el más reciente a partir de este escrito) con más o menos la instalación predeterminada, usando lo siguiente para el almacenamiento:

# # 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}"
#

La mayoría de las páginas que se pueden almacenar en caché tendrán un TTL muy largo. El sitio con el que estoy trabajando es enorme y tiene millones de páginas, que posiblemente no se ajusten al tamaño de almacenamiento mencionado anteriormente (4 GB).

Preparado para las preguntas:

  • Supongamos que todo el espacio de almacenamiento está lleno y que nada en el caché ha caducado todavía (mi TTL es de 2 semanas en cada elemento del caché).

  • Supongo que Ban Lurker es inútil aquí, porque solo eliminará los elementos caducados y ninguno caducará.

Preguntas:

  • Dado el escenario anterior, ¿qué le sucede a Varnish cuando llegan solicitudes adicionales para algo que aún no está en el caché? ¿Varnish intenta eliminar elementos antiguos de la memoria caché, independientemente del TTL de esos elementos? ¿Varnish se estrella? ¿Colgar?

  • Si Varnish no maneja el escenario, ¿hay algo que pueda hacer para configurarlo para manejar mejor el escenario? (Obviamente podría reducir el TTL de los elementos en el caché, pero me pregunto si hay alguna sugerencia adicional).

Estoy viendo en este escenario que efectivamente Varnish deja de responder a las solicitudes. En el momento en que esto sucede, no me falta memoria o CPU en la caja.

Gracias.


Seguimiento:

También vi esta publicación

que me apuntó hacia

que parece indicar que todo "simplemente sucede" ... pero parece que en realidad envía una solicitud PURGE para la URL, lo que puede requerir agregar las cosas apropiadas a su VCL (consulte https://www.varnish-cache.org/ docs / 3.0 / tutorial / purging.html )

Voy a intentarlo y haré un seguimiento si eso resuelve el problema.

usuario174548
fuente
3
En lo que a nosotros respecta, también usamos Varnish para almacenar en caché grandes cantidades de datos, específicamente, un repositorio de imágenes de aproximadamente 2,8 millones de imágenes con un archivo Varnish de 30 gigas. El relleno de barniz llena los 30 conciertos y tan pronto como se agregan cosas nuevas a la memoria caché, elimina la entrada de la memoria caché a la que "no se accedió durante mucho tiempo". Cada entrada de caché tiene un tiempo asociado, es la última marca de tiempo de acceso. La entrada con la última marca de tiempo de último acceso va. (Por cierto: ¿por qué almacenamos en caché las imágenes? Porque el HDD es demasiado lento para servirlas y las SSD para todo cuestan demasiado)
sinni800

Respuestas:

1

Según su configuración, parece utilizar el disco para almacenar la memoria caché de barniz.

Esto no se recomienda ( para el rendimiento ) a menos que tenga una buena razón (como sinni800).

Intente usar RAM para almacenar la memoria caché de barniz ("malloc" en lugar de "archivo") y reproduzca el problema.


fuente