¿Es posible ejecutar barniz con memoria y almacenamiento en disco?


8

Estoy interesado en maximizar los éxitos de caché y la eficiencia para un sitio que cambia lentamente. El host virtual no tiene una gran cantidad de RAM, pero me gustaría usar lo que está disponible para barnizar, pero recurrir a la memoria caché del disco si no hay suficiente memoria.

¿Es posible hacer esto con una sola instancia de barniz? Los documentos describen el almacenamiento "archivo" y "malloc" como opciones distintas.

Respuestas:


9

Usa el mallocmétodo. Intentará poner todo en RAM y el núcleo lo cambiará si es necesario. De esta manera, está utilizando la memoria y el disco juntos.

Al mismo tiempo, filefunciona mucho mejor que malloccuando comienzas a golpear el disco. Para más información, ver:


Gracias, esto funciona. Creo que solo usaré el método malloc con RAM disponible y confiaré en el servidor para realizar el almacenamiento en caché de disco (por ejemplo, apache mod_disk_cache).
user67641

1
¿Hay alguna manera de conectar Varnish a otros backends basados ​​en memoria?
CMCDragonkai

1
Tenga en cuenta que en realidad podría hacer lo contrario: use solo el filebackend y confíe en el almacenamiento en caché de disco de Linux que usa toda la memoria disponible de forma predeterminada. Sí, siempre está escribiendo en el disco (lo que puede ser un problema si no está utilizando SSD), pero al leer varias veces los mismos archivos, leerá mucho solo de la memoria.
Benjamin

7

Debe nombrar el almacenamiento respectivamente de la siguiente manera y en vcl especifica con qué almacenamiento de back-end desea usar beresp.storage = storage_name. .

Barniz 3. * opciones de proceso

DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s foo=malloc,512m \
             -s bar=file,/var/lib/varnish/varnish_storage.bin,512m"

vcl v3

sub vcl_fetch {
    if (req.url ~ "html") {
       set beresp.storage = "foo";
       set beresp.http.x-storage = "foo";
    } else {
       set beresp.storage = "bar";
       set beresp.http.x-storage = "bar";
    }
    return (deliver);
}

Para Varnish v4, puede seguir las instrucciones de la publicación oficial del blog https://info.varnish-software.com/blog/partition-your-varnish-cache


¿Qué hace la if (req.url ~ "html")condición? Creo que el OP quiere usar ambos backends de almacenamiento de la manera más eficiente para todas las solicitudes.
kontextify
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.