varnish vcl_hit Lack Hit-for-Pass bedeutet?



varnish vcl_hit fetch (1)

Wie Varnish Version 3 enthält einige Objekte für verschiedene Operationen.

Zum Beispiel wird pass verwendet, wenn Daten vom Backend abgerufen werden müssen. und es verwendet Treffer, wenn er anfragende Inhalte im Cache findet.

Aber ich kann die Verwendung von Hit-for-Pass nicht verstehen. wenn lack es benutzt? Ich habe kein nützliches Material gefunden, das mich klar macht.


Ein hit_for_pass-Objekt wird erstellt, um die Abrufprozedur für einen Backend-Server zu optimieren.

Bei gewöhnlichen Cache-Fehlern wird Varnish alle Clients in die Warteschlange stellen, die dasselbe Cache-Objekt anfordern, und eine einzelne Anforderung an das Backend senden. Dies ist normalerweise am schnellsten. Das Backend kann für eine einzelne Anforderung verwendet werden, anstatt es gleichzeitig mit n Anforderungen zu überschwemmen.

Denken Sie daran, dass einige Backends viel Zeit benötigen, um ein Objekt vorzubereiten. 10 Sekunden sind keine Seltenheit. Wenn dies die Titelseiten-HTML ist und Sie 3000 req / s dagegen haben, ist das Senden nur einer Backend-Anfrage sehr sinnvoll.

Das Problem tritt auf, wenn Varnish das Objekt abgerufen hat und es nicht mehr zwischengespeichert werden kann. Gründe dafür können sein, dass das Backend "Cache-Control: max-age = 0" oder (häufiger) einen Set-Cookie-Header sendet. In diesem Fall befinden sich zwischen 3.000 und 30.000 Clients (3k req / s * 10sec) in der Warteschlange, und für jeden dieser Clients muss dieselbe langsame Back-End-Anfrage ausgeführt werden, um sie bedienen zu können. Dies wird die Reaktionszeit Ihrer Website ruinieren.

Daher sichert Varnish die Entscheidung, dass diese Anforderung nicht zwischengespeichert werden kann, indem ein hit_for_pass-Objekt erstellt wird.

Bei der nächsten Anfrage für dieselbe URL gibt die Cache-Suche ein hit_for_pass-Objekt zurück. Dies signalisiert, dass mehrere Abrufe gleichzeitig ausgeführt werden können. Ihr Backend ist vielleicht nicht besonders glücklich darüber, aber zumindest bringt Varnish die Kunden nicht ohne Grund in die Warteschlange.