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


Estoy interesado en maximizar la eficacia y los resultados de la memoria caché 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 el barniz, pero recurrir a la caché del disco si no hay suficiente memoria.

¿Es posible hacer esto con una sola instancia de barniz? los docs Describe el almacenamiento de "archivo" y "malloc" como opciones distintas.


7
2018-01-23 04:05


origen




Respuestas:


Utilizar el malloc método. Intentará poner todo en la RAM y el kernel lo cambiará si es necesario. De esta manera están utilizando la memoria y el disco juntos.

Al mismo tiempo file se desempeña mucho mejor que malloc cuando empiezas a golpear el disco. Para más información, ver:


9
2018-01-23 04:17



Gracias, esto funciona. Creo que solo usaré el método malloc con la RAM disponible, y confiaré en el servidor para hacer el almacenamiento en caché del disco (por ejemplo, apache mod_disk_cache). - user67641
¿Hay alguna forma de insertar Varnish en otros backends basados ​​en memoria? - CMCDragonkai
Tenga en cuenta que en realidad podría hacer lo contrario: use solo el file backend y confíe en el almacenamiento en caché del disco de Linux que usa toda la memoria disponible de forma predeterminada. Si tu eres siempre escribir en el disco (lo que puede ser un problema si no está usando SSD), pero al leer varias veces los mismos archivos, leerá mucho solo de la memoria. - Benjamin


Debe nombrar el almacenamiento respectivamente de la siguiente manera y en vcl debe especificar con qué almacenamiento de backend 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, puedes seguir las instrucciones de la publicación oficial del blog. https://www.varnish-software.com/blog/partitioning-your-varnish-cache


7
2018-01-11 18:40