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.

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:


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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.