2012-10-02 20 views
46

Como Varnish Versión 3 tiene algunos objetos para diferentes operaciones.¿Qué significa golpear para pasar el barniz?

Por ejemplo, el pase se usa cuando tiene que recuperar datos del servidor. y usa el hit cuando encuentra la solicitud de contenido en caché.

Pero no puedo entender el uso de hit-for-pass. cuando barniz lo usa? No he encontrado ningún material útil en la red que me aclare.

Respuesta

153

Un objeto hit_for_pass se realiza para optimizar el procedimiento de búsqueda contra un servidor de back-end.

Para omisiones de caché normales, Varnish pondrá en cola a todos los clientes que soliciten el mismo objeto de caché y enviarán una única solicitud al servidor. Esto es generalmente lo más rápido posible, permitiendo que el backend trabaje en una única solicitud en lugar de saturarla con n solicitudes al mismo tiempo.

Recuerde que algunos backends usan mucho tiempo para preparar un objeto; 10 segundos no es raro. Si este es el HTML de la página principal y tiene 3000 req/s en contra, enviar solo una solicitud de back-end tiene mucho sentido.

El problema surge cuando, después de que Varnish ha captado el objeto, ve que no se puede almacenar en caché. Las razones para esto pueden ser que el servidor envía "Cache-Control: max-age = 0", o (más a menudo) un encabezado Set-Cookie. En este caso, tiene entre 3,000 y 30,000 clientes (3k req/s * 10sec) esperando inactivo en la cola, y para cada uno de estos clientes la misma lenta solicitud de back-end de uno a uno debe completar para atenderlos. Esto arruinará el tiempo de respuesta de su sitio.

Así que Varnish guarda la decisión de que esta solicitud no se puede almacenar en caché creando un objeto hit_for_pass.

En la próxima solicitud de la misma URL, la búsqueda de caché devolverá un objeto hit_for_pass. Esto indica que se pueden realizar varias búsquedas al mismo tiempo. Puede que su servidor no esté muy contento con eso, pero al menos Varnish no está haciendo cola con los clientes sin ningún motivo.

+0

lo tengo. Gracias @ikarsten –

+1

Explicación muy clara. Gracias. – Vaheh

+0

genial. ¡Muchas gracias! – tven