2014-02-18 13 views
5

Wir haben uns gefragt, ob jemand Erfahrung mit einer großen Menge von Verboten in Varnish hat. Wir betrachten eine Verbotsstrategie, die jede Nacht zu ein paar hundert (intelligenten) Sperren führen kann (auf X Millionen Cache-Objekten).Varnish: Leistung Auswirkungen große Ban Liste

Obwohl mir bewusst ist, dass dies in hohem Maße von Umgebungsvariablen abhängt, haben wir uns gefragt, ob dies erhebliche Auswirkungen auf die Leistung hat.

+0

Wir planen auch die Implementierung einer ähnlichen Strategie. Sind Sie damit in Produktion gegangen und konnten Sie Ihre Erfahrungen teilen? Es wäre sehr hilfreich. =) –

Antwort

1

Bans sind ziemlich CPU-intensiv, daher sollte darauf geachtet werden, sie nicht zu sehr zu verwenden. Wenn Sie dies tun, wird die CPU-Auslastung steigen und Sie werden feststellen, dass eine große Anzahl von Übereinstimmungen mit regulären Ausdrücken pro Sekunde ausgeführt wird.

Im Allgemeinen wird ein Verbot für jedes Objekt im Speicher an dem Punkt, an dem es eingegeben wird, übereinstimmen, so dass jedes Millionenobject zu einem Verbot führt. Das hört sich nach viel an, aber moderne Server sind schnell und heute ist ein moderner Server in der Lage, jede Sekunde Millionen von regulären Ausdrücken zu erzeugen. Mein vier Jahre alter Laptop macht etwa 15 Millionen Regex-Übereinstimmungen mit einer Sekunde, die auf einem einzelnen Kern läuft, nur um Ihnen eine Vorstellung von der Skalierung zu geben.

Zusätzlich gibt es eine weitere Eigenschaft von Varnish, die ins Spiel kommt. Das Verbot lurker. Der Ban-Lurker ist ein Thread, der den Cache durchläuft und Verbote bewertet, die versuchen, Objekte zu töten, bevor sie angefordert werden, wodurch die Größe der Sperrliste reduziert wird. Wenn Ihre Bans das req-Objekt nicht verwenden, sind sie Kandidaten für die Bewertung durch den Lurker. Wenn Sie ein paar Verbote verwenden möchten, sollten Sie darauf achten, Ihre Verbote in einer lurkerfreundlichen Weise zu schreiben. So genannte "Smart Bans", mit denen Sie vertraut zu sein scheinen.

Alles in allem denke ich, dass Ihr Setup vernünftig klingt. Es wird wahrscheinlich gut funktionieren, ein paar hundert intelligente Verbote mit ein paar Millionen Objekten im Cache auszugeben. Es wird natürlich ein bisschen CPU-Auslastung geben, wenn die Bans eingesetzt werden und der TTFB wird etwas steigen, aber ich denke, es wird Ihnen gut gehen. Vielleicht möchten Sie etwas mit den Parametern spielen, die steuern, wie der Ban-Lurker funktioniert, aber versuchen Sie zuerst die Standardwerte, sie sind ziemlich gesund.

Verwandte Themen