In che modo Varnish gestisce l'esaurimento della memoria?


9

Sto usando Varnish 3.0.3 (l'ultimo al momento della stesura di questo documento) con più o meno l'installazione predefinita, usando quanto segue per la memorizzazione:

# # 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}"
#

La maggior parte delle pagine che possono essere memorizzate nella cache avrà un TTL molto lungo. Il sito con cui sto lavorando è enorme e ha milioni di pagine, che non possono adattarsi alle dimensioni di archiviazione sopra elencate (4 GB).

Preparati per le domande:

  • Supponiamo che l'intero spazio di archiviazione sia pieno e che nulla nella cache sia ancora scaduto (il mio TTL è di 2 settimane per ogni singolo elemento nella cache).

  • Suppongo che il Ban Lurker sia inutile qui, perché eliminerà solo gli articoli scaduti e nessuno è scaduto.

Domande:

  • Dato lo scenario sopra, cosa succede a Varnish quando arrivano richieste aggiuntive per qualcosa che non è già nella cache? Varnish tenta di eliminare elementi più vecchi dalla cache, indipendentemente dal TTL di tali elementi? La vernice si schianta? Appendere?

  • Se Varnish non gestisce lo scenario, c'è qualcosa che posso fare per configurarlo per gestire meglio lo scenario? (Potrei ovviamente abbassare il TTL degli elementi nella cache, ma mi chiedo se ci sono ulteriori suggerimenti).

Sto vedendo in questo scenario che Varnish smette effettivamente di rispondere alle richieste. Nel momento in cui ciò accade, non ho esaurito la memoria o la CPU sulla confezione.

Grazie.


Azione supplementare:

Ho visto anche questo post

che mi ha indicato

che sembra indicare tutto "succede" ... ma sembra che in realtà invii una richiesta PURGE per l'URL, che potrebbe richiedere l'aggiunta delle cose appropriate al tuo VCL (vedi https://www.varnish-cache.org/ docs / 3.0 / tutorial / purging.html )

Lo proverò e lo seguirò se questo risolve il problema.


3
Per quanto ci riguarda, utilizziamo Varnish anche per memorizzare nella cache enormi quantità di dati, in particolare un repository di immagini di circa 2,8 milioni di immagini con un file Varnish simile a 30 gig. Riempi lo smalto riempi i 30 concerti e non appena vengono aggiunti nuovi elementi alla cache, elimina la voce della cache a cui "non è stato acceduto per il tempo più lungo". Ad ogni voce della cache è associato un orario, è l'ultimo timestamp di accesso. La voce con il timestamp dell'ultimo accesso più basso va. (A proposito: perché memorizziamo nella cache le immagini !? Perché l'HDD è troppo lento per servirle e gli SSD per tutto ciò che costa troppo)
sinni800

Risposte:


1

Secondo la tua configurazione, sembra che tu usi il disco per archiviare la cache delle vernici.

Questo non è raccomandato ( per le prestazioni ) a meno che tu non abbia una buona ragione (come sinni800).

Prova a utilizzare la RAM per archiviare la cache delle vernici ("malloc" anziché "file") e riprodurre il problema.

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.