Ist es möglich, Lack sowohl mit Speicher als auch mit Festplattenspeicher auszuführen?

8

Ich bin daran interessiert, die Cache-Treffer und die Effizienz für eine sich langsam ändernde Site zu maximieren. Der virtuelle Host verfügt nicht über eine große Menge an RAM, aber ich würde gerne das verwenden, was für den Lack verfügbar ist, aber auf den Festplatten-Cache zurückgreifen, wenn nicht genügend Speicher vorhanden ist.

Ist dies mit einer einzigen Lackinstanz möglich? In den Dokumenten wird der Speicher "Datei" und "Malloc" als unterschiedliche Optionen beschrieben.

user67641
quelle

Antworten:

9

Verwenden Sie die mallocMethode. Es wird versucht, alles in den Arbeitsspeicher zu stellen, und der Kernel wird es bei Bedarf austauschen. Auf diese Weise verwenden Sie Speicher und Festplatte zusammen.

Gleichzeitig ist die Leistung fileviel besser als mallocwenn Sie anfangen, auf die Festplatte zu schlagen. Weitere Informationen finden Sie unter:

Sameer
quelle
Danke, das funktioniert. Ich denke, ich verwende nur die Malloc-Methode mit verfügbarem RAM und verlasse mich auf den Server, um das Disc-Caching durchzuführen (z. B. Apache mod_disk_cache).
user67641
1
Gibt es eine Möglichkeit, Varnish an andere speicherbasierte Backends anzuschließen?
CMCDragonkai
1
Beachten Sie, dass Sie tatsächlich das Gegenteil tun können: Verwenden Sie nur das fileBackend und verlassen Sie sich auf das Linux-Festplatten-Caching, das standardmäßig den gesamten verfügbaren Speicher verwendet. Ja, Sie schreiben immer auf die Festplatte (was ein Problem sein kann, wenn Sie keine SSDs verwenden), aber wenn Sie mehrmals dieselben Dateien lesen, lesen Sie viel nur aus dem Speicher.
Benjamin
7

Sie müssen den Speicher wie folgt benennen und in vcl angeben, mit welchem ​​Backend-Speicher Sie ihn verwenden möchten beresp.storage = storage_name. .

Lack 3. * Prozessoptionen

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

Für Varnish v4 können Sie den Anweisungen des offiziellen Blogposts unter https://info.varnish-software.com/blog/partitioning-your-varnish-cache folgen

Köcher
quelle
Was macht der if (req.url ~ "html")Zustand? Ich denke, das OP möchte beide Speicher-Backends für alle Anfragen so effizient wie möglich nutzen.
kontextify