È possibile eseguire la vernice con memoria e memoria su disco?


8

Sono interessato a massimizzare gli accessi alla cache e l'efficienza per un sito che cambia lentamente. L'host virtuale non ha un'enorme quantità di RAM, ma mi piacerebbe usare ciò che è disponibile per la vernice, ma per tornare alla cache del disco se non c'è abbastanza memoria.

È possibile farlo con una singola istanza di vernice? I documenti descrivono l'archiviazione "file" e "malloc" come opzioni distinte.

Risposte:


9

Usa il mallocmetodo Tenterà di inserire tutto nella RAM e il kernel lo sostituirà, se necessario. In questo modo stai usando memoria e disco insieme.

Allo stesso tempo, filefunziona molto meglio di mallocquando inizi a colpire il disco. Per maggiori informazioni, vedi:


Grazie, funziona. Penso che userò semplicemente il metodo malloc con la RAM disponibile e farò affidamento sul server per eseguire la memorizzazione nella cache del disco (ad es. Apache mod_disk_cache).
user67641

1
C'è un modo per collegare Varnish ad altri backend basati su memoria?
CMCDragonkai,

1
Si noti che si potrebbe effettivamente fare il contrario: utilizzare solo il fileback - end e fare affidamento sulla cache del disco di Linux che utilizza tutta la memoria disponibile per impostazione predefinita. Sì, stai sempre scrivendo su disco (che potrebbe essere un problema se non usi SSD), ma quando leggi più volte gli stessi file, leggerai molto solo dalla memoria.
Benjamin

7

È necessario nominare l'archiviazione rispettivamente come segue e in vcl si specifica con quale archivio back-end si desidera utilizzare beresp.storage = storage_name. .

Vernice 3. * opzioni di processo

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);
}

Per Varnish v4, puoi seguire le istruzioni del post ufficiale del blog https://info.varnish-software.com/blog/partitioning-your-varnish-cache


Cosa fa la if (req.url ~ "html")condizione? Penso che l'OP voglia utilizzare entrambi i back-end di archiviazione nel modo più efficiente per tutte le richieste.
kontextify,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.