Wie geht Varnish mit Speichermangel um?


9

Ich verwende Varnish 3.0.3 (das neueste zum Zeitpunkt dieses Schreibens) mit mehr oder weniger der Standardinstallation und verwende Folgendes für die Speicherung:

# # Cache file location
VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin
#
# # Cache file size: in bytes, optionally using k / M / G / T suffix,
# # or in percentage of available disk space using the % suffix.
VARNISH_STORAGE_SIZE=4000M
#
# # Backend storage specification
VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}"
#

Die meisten Seiten, die zwischengespeichert werden können, haben eine sehr lange TTL. Die Site, mit der ich arbeite, ist riesig und hat Millionen von Seiten, die möglicherweise nicht in die oben angegebene Speichergröße (4 GB) passen.

Richten Sie sich für die Fragen ein:

  • Nehmen wir an, der gesamte Speicherplatz ist voll und noch ist nichts im Cache abgelaufen (meine TTL beträgt 2 Wochen für jedes einzelne Element im Cache).

  • Ich gehe davon aus, dass der Ban Lurker hier unbrauchbar ist, da er nur abgelaufene und keine abgelaufenen Elemente löscht.

Fragen:

  • Was passiert angesichts des obigen Szenarios mit Varnish, wenn zusätzliche Anforderungen für etwas eingehen, das sich noch nicht im Cache befindet? Versucht Varnish, ältere Elemente unabhängig von der TTL dieser Elemente aus dem Cache zu löschen? Stürzt der Lack ab? Hängen?

  • Wenn Varnish das Szenario nicht handhabt, kann ich etwas tun, um es so zu konfigurieren, dass es das Szenario besser handhabt? (Ich könnte natürlich die TTL der Elemente im Cache senken, aber ich frage mich, ob es zusätzliche Vorschläge gibt).

Ich sehe in diesem Szenario, dass Varnish effektiv nicht mehr auf Anfragen reagiert. Zu diesem Zeitpunkt habe ich weder Speicher noch CPU auf der Box.

Vielen Dank.


Nachverfolgen:

Ich habe diesen Beitrag auch gesehen

was mich zeigte

Dies scheint darauf hinzudeuten, dass alles "einfach passiert" ... aber es sieht so aus, als würde tatsächlich eine PURGE-Anfrage für die URL gesendet, für die möglicherweise das entsprechende Material zu Ihrer VCL hinzugefügt werden muss (siehe https://www.varnish-cache.org/). docs / 3.0 / tutorial / purging.html )

Ich werde das versuchen und nachverfolgen, wenn dies das Problem löst.


3
Was uns betrifft, verwenden wir Varnish auch zum Zwischenspeichern großer Datenmengen, insbesondere eines Bild-Repositorys von etwa 2,8 Millionen Bildern mit einer 30-Gig-Lackdatei. Die Lackfüllung füllt die 30 Gig aus und löscht den Cache-Eintrag, auf den "am längsten nicht zugegriffen wurde", sobald neue Dinge zum Cache hinzugefügt werden. Jedem Cache-Eintrag ist eine Zeit zugeordnet, es ist der letzte Zugriffszeitstempel. Der Eintrag mit dem niedrigsten Zeitstempel für den letzten Zugriff wird angezeigt. (Übrigens: Warum zwischenspeichern wir Bilder? Weil die Festplatte zu langsam ist, um sie zu bedienen, und SSDs für alles zu viel
kosten

Antworten:


1

Entsprechend Ihrem Setup verwenden Sie offenbar eine Festplatte zum Speichern des Lackcaches.

Dies wird nicht empfohlen ( für die Leistung ), es sei denn, Sie haben einen guten Grund (wie sinni800).

Versuchen Sie, RAM zum Speichern des Lackcaches ("malloc" anstelle von "file") zu verwenden, und reproduzieren Sie das Problem.

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.