2012-10-02 5 views
46

Da Varnish Version 3 einige Objekte für verschiedene Operationen hat.Lack Hit-for-Pass bedeutet?

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

Aber ich kann Verwendung von Hit-for-Pass nicht verstehen. Wann benutzt Lack es? Ich habe im Netz kein brauchbares Material gefunden, das mir klar macht.

Antwort

153

Ein hit_for_pass -Objekt wurde erstellt, um die Fetch-Prozedur für einen Backend-Server zu optimieren.

Bei normalen Cache-Fehlern stellt Varnish alle Clients, die das gleiche Cache-Objekt anfordern, in eine Warteschlange und sendet eine einzige Anfrage an das Backend. Dies ist in der Regel am schnellsten, da das Back-End mit einer einzigen Anfrage arbeiten kann, anstatt es gleichzeitig mit n Anfragen zu überfluten.

Denken Sie daran, dass einige Backends sehr viel Zeit benötigen, um ein Objekt vorzubereiten; 10 Sekunden sind nicht ungewöhnlich. Wenn dies der HTML-Code der ersten Seite ist und Sie 3000 req/s dagegen haben, ist es sehr sinnvoll, nur eine Backend-Anfrage zu senden.

Das Problem tritt auf, wenn nach Varnish das Objekt abgerufen hat, sieht es, dass es nicht 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 irgendwo zwischen 3.000 und 30.000 Clients (3k req/s * 10sec) in der Warteschlange, und für jeden dieser Clients muss die gleiche langsame Back-Up-Anforderung einmal abgeschlossen sein, um sie zu bedienen. Dies wird die Reaktionszeit Ihrer Website ruinieren.

So speichert Varnish die Entscheidung, dass diese Anfrage 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 allzu glücklich darüber, aber zumindest stellt Varnish die Clients nicht ohne Grund in die Warteschlange.

+0

haben es geschafft. Danke @ikarsten –

+1

Sehr klare Erklärung. Vielen Dank. – Vaheh

+0

großartig. Danke vielmals! – tven