/ / Przełom w lakierowaniu na przejazd? - lakier, lakier-vcl

Lakierowanie w trybie "uderzenie na przejazd"? - lakier, lakier-vcl

Jak Varnish Version 3 ma kilka obiektów do różnych operacji.

Na przykład pass jest używany, gdy ma pobrać dane z backendu. i używa trafienia, gdy wykryje żądanie zawartości w pamięci podręcznej.

Ale nie mogę zrozumieć użycia hit-for-pass. kiedy lakier go używa? Nie znalazłem w sieci żadnego użytecznego materiału, który by mnie wyjaśnił.

Odpowiedzi:

156 dla odpowiedzi № 1

Obiekt hit_for_pass został stworzony w celu optymalizacji procedury pobierania na serwerze zaplecza.

W przypadku zwykłych pomyłek w pamięci podręcznej, Lakier będzie czekał w kolejceklienci żądający tego samego obiektu pamięci podręcznej i wysyłający pojedyncze żądanie do zaplecza. Zwykle jest to najszybsza opcja, pozwalająca backendowi pracować nad pojedynczym żądaniem, zamiast zamieniać je na n żądań w tym samym czasie.

Pamiętaj, że niektóre backendy używają dużo czasuprzygotowanie obiektu; 10 sekund nie jest rzadkością. Jeśli jest to HTML strony tytułowej i masz 3000 odpowiedzi / s, przed wysłaniem tylko jednego żądania backend ma sens.

Kwestia pojawia się, gdy po Varnish ma pobraneobiekt, który widzi, że nie może być zbuforowany Przyczynami tego może być to, że backend wysyła "Cache-Control: max-age = 0", lub (częściej) nagłówek Set-Cookie .W tym przypadku masz gdzieś od 3000 do 30 000 klientów (3k ponownie / s * 10 sekund) siedzi bezczynnie w kolejce, a dla każdego z tych klientów wymagane jest to samo powolne żądanie backendu, aby je obsłużyć, co zrujnuje czas reakcji Twojej witryny.

Tak więc Varnish zapisuje decyzję, że tego żądania nie można buforować, tworząc obiekt hit_for_pass.

Przy następnym żądaniu dla tego samego adresu URL pamięć podręcznalookup zwróci obiekt hit_for_pass. To sygnalizuje, że wiele pobrań można wykonać w tym samym czasie. Twój backend może nie być zbyt szczęśliwy z tego powodu, ale przynajmniej Varnish nie będzie w kolejce klientów bez powodu.