Kałamarnica - część 2

Squid to nie tylko usługa proxy i cache, ale potrafi dużo więcej: zarządzać acl (listami dostępu), filtrować zawartość, może nawet filtrować ssl nawet w trybie transparentnym (metoda proxy - bez konieczności konfigurowania ustawień proxy z poziomu przeglądarki) , jest jak człowiek pośrodku, nikt nie wie, że tam jest). Dlatego często widzę, jak marnuje się cały potencjał tej aplikacji, nie wiedząc, jak skonfigurować każdą z jej części.

Teraz interesującą rzeczą, którą robi squid, jest pamięć podręczna (moim zdaniem). Powiesz mi, dlaczego pamięć podręczna? Powód jest prosty, najważniejsze jest lepsze zarządzanie wykorzystaniem szybkości i przepustowości. Pomyśl uważnie, 1000 osób w Twojej firmie konsultuje się co 5 minut, wspólne strony, Google, Hotmail, Gmail itp., Abyś mógł pobierać obrazy, banery, reklamy, zawartość html w kółko, wszystko to jest statyczne rzeczy, nie zmieniają się tak często, lepiej przechowywać je w sieci lokalnej i dostarczyć kopię, którą uważasz za ostatnią w rozważanych konfiguracjach.

Jak to zrobić? Proste z następującym zdaniem:

refresh_pattern [-i] regex min percent max [options]

Jak zawsze mówię, nie wierz we wszystko, więc zapraszam do lektury z oficjalnego źródła. Polecam zapoznać się z instrukcją tego zdania TUTAJ

Zdanie wzorzec_odświeżania Naszą etykietą będzie zawsze dodawanie nowych parametrów do pamięci podręcznej.

Ważne, twoje listy pamięci podręcznej muszą być sekwencyjne, ponieważ gdy pasują do pierwszej, która pasuje do obiektu, nie będą kontynuować czytania twoich innych reguł

W wyrażeniach regularnych rozróżniana jest wielkość liter, dlatego flv to nie to samo co FLV, ale możesz tego uniknąć, jeśli chcesz, używając opcji -i . Wtedy wyglądałoby to tak wzorzec_odświeżenia -i

„Min”: Jest to czas (w minutach), w którym obiekt zostanie uznany za „świeży lub świeży” i jeśli nie ma wyraźnej etykiety „wygasł”. Domyślnie squid zaleca, aby było to 0, z powodów, dla których niektóre aplikacje dynamiczne mogą zachowywać się dziwnie, czysta bla bla bla, naprawdę ta wartość powinna być liczbą, którą uważasz za przydatną i skuteczną dla elementów, które chcesz buforować, przykład: jpg, 1440 minut (dziennie) wydaje mi się w porządku, to nie jest tak, że obrazy postu zmieniają się co 5 minut na stronie.

'Procent' Jest to procent wieku obiektu (od ostatniej modyfikacji), który zostanie uznany za „nowy lub świeży”. Pozwólcie, że wyjaśnię, być może robiąc ciągłe przeładowywanie lub odświeżanie, aby zobaczyć ostatnie modyfikacje strony internetowej, squid może rozważyć, czy minęło już, powiedzmy, 50% czasu min y max, ponownie pobierz ten obiekt z internetu i przekaż nową kopię.

„Max” to granica powyżej lub równa „Min” jak długo obiekt jest uważany za „świeży lub świeży”, przypuśćmy, że obraz jakiejś strony był przeglądany tylko raz przez użytkownika, obiekt ten już osiągnął swój czas min, ale nie max, po ponownym zapytaniu zostanie dostarczona kopia pamięci podręcznej.

Options:
override-expire
override-lastmod
reload-into-ims
ignore-reload
ignore-no-store
ignore-private
max-stale=NN
refresh-ims
store-stale

Opcje te zostały wprowadzone głównie w celu zignorowania wcześniej ustalonych zachowań w językach i protokołach, aby zagwarantować efektywne wykorzystanie pamięci podręcznej.

override-expire

Wymusza minimalny czas obiektu, nawet jeśli serwer wysłał krótszy czas wygaśnięcia (na przykład nagłówek lub Cache-Control: max-age). Jeśli to zrobimy, pojawi się „ostrzeżenie” o treści „NARUSZA standard HTTP”, ale to tylko ostrzeżenia, które możemy zignorować. Teraz, jeśli czas wysyłany przez serwer jest dłuższy, squid zajmie czas (wygaśnięcie) serwera

override-lastmod

Wzmacnia minimalny czas elementu, nawet jeśli został on niedawno zmodyfikowany.

reload-into-ims

Krótkie wyjaśnienie jest takie, że zapobiega to, że kiedy naciśniemy przycisk odświeżania lub wyślemy żądanie braku pamięci podręcznej, squid dostarczy pamięć podręczną, jeśli nie została ona „zmodyfikowana od” i / lub jeśli na stronie nie ma „nagłówków”.

ignore-reload

Zignoruj ​​czynność użytkowników polegającą na naciśnięciu przycisku odświeżania lub odświeżania strony

ignore-no-store

Zignoruj ​​każdą regułę w nagłówkach, aby nie buforować, na przykład filmy

ignore-private

Zignoruj ​​każdą regułę w nagłówkach treści prywatnych, które nie powinny być buforowane, na przykład: treść z Facebooka.

refresh-ims

Squid kontaktuje się z serwerem, aby upewnić się, że obiekt jest najnowszy. Jeśli tak, to dostarczy pamięć podręczną

store-stale

Squid zachowa wszystkie te odpowiedzi, nawet jeśli nie mają one daty ważności, jest to bardzo niepraktyczne, ponieważ zwykle nie można ich ponownie wykorzystać. Jeśli zdecydujesz się ją włączyć, musisz zadeklarować max-stale = NN

max-stale=NN

Jeśli włączyłeś powyższe, musisz zadeklarować maksymalny czas życia dla tej odpowiedzi lub czynnika. Squid nie dostarcza obiektów tego stylu, ale może zweryfikować je ze źródłem

Oto tabela pokazująca, jak działa stan „FRESH” w zależności od omówionych przez nas wartości:

  • FRESH jeśli wygaśnie> teraz, w przeciwnym razie STALE
  • STALE, jeśli wiek> maks
  • FRESH, jeśli współczynnik lm <procent, w przeciwnym razie STALE
  • FRESH if age <min else STALE

Oto przykładowa konfiguracja dla konkretnej firmy z dużą ilością miejsca na dysku, dobrym wyposażeniem i dobrą przepustowością

refresh_pattern -i \.(3gp|7z|ace|asx|bin|deb|divx|dvr-ms|ram|rpm|exe|inc|cab|qt)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(rar|jar|gz|tgz|bz2|iso|m1v|m2(v|p)|mo(d|v)|arj|lha|lzh|zip|tar)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(jp(e?g|e|2)|gif|pn[pg]|bm?|tiff?|ico|swf|dat|ad|txt|dll)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(avi|ac4|mp(e?g|a|e|1|2|3|4)|mk(a|v)|ms(i|u|p)|og(x|v|a|g)|rm|r(a|p)m|snd|vob)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(pp(t?x)|s|t)|pdf|rtf|wax|wm(a|v)|wmx|wpl|cb(r|z|t)|xl(s?x)|do(c?x)|flv|x-flv)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
cache_mem 8092 MB

Teraz cache jest nie tylko na dysku twardym, możemy również cache'ować pamięć RAM, ta wartość jest dla każdego procesu squid, więc musisz wziąć to pod uwagę, gdy używasz redirectorów takich jak SquidGuard

maximum_object_size_in_memory 1024 KB

Maksymalny rozmiar obiektu w pamięci, który squid będzie przechowywać w pamięci RAM. Możesz również zadeklarować minimum.


memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF

Jak widać, jedną z zasad jest wymiana pamięci podręcznej w pamięci RAM, a drugą na dysku twardym. Istnieją 2 polisy GDSF i LFUDA. Pierwsza stara się zwiększyć procent trafień w pamięci podręcznej, mając pod ręką wiele małych obiektów, druga stara się odwrotnie, utrzymuje obiekty w pamięci podręcznej niezależnie od ich wielkości.

Pytanie, które wyobrażam sobie, że zadajesz mi w tej chwili, brzmi: z jakiego użytku korzystam? Cóż, jeśli weźmiesz pod uwagę, że w twoim środowisku robią dużo zapytań, a kilka pobrań korzysta z GDSF, jeśli wręcz przeciwnie, robią dużo pobrań i kilka zapytań LFUDA. Że jeśli polecam LFUDĘ, gdy masz zamiar to zrobić, nie wiem, cache w 1 TB dysku, to jest wydajniejsze.

maximum_object_size 4 MB

Maksymalny rozmiar, jaki może być przechowywany w obiekcie

cache_dir aufs /media/proxy249/cache 100 16 256

Gdzie będzie przechowywana pamięć podręczna, uwaga tutaj, ważne jest, jeśli używasz ufs, aufs lub diskd, wszystkie 3 działają mniej więcej tak samo, różnica polega na tym, że aufs i diskd działają z oddzielnymi procesami do wykonywania operacji we / wy na dysku twardym i unikaj zawieszania się procesów squid podczas tych operacji, dodatkowo diskd możesz określić liczbę wątków, które będziesz mieć dla tego zadania. Polecam aufs, jeśli masz dobry zespół.

Rozmiar 100 (megabajtów), które można umieścić 100000 to prawie 100 GB, w zależności od Twojej dostępności. 16 to liczba folderów, a 256 to liczba podfolderów. Możesz grać z obiema wartościami, zależy to od szybkości dysków i posiadanych zasobów.


cache_swap_low 90
cache_swap_high 95

Te opcje to wartości zastępowania obiektów, jest to minimalna i maksymalna wartość jako znak wodny według kalmara, gdzie te liczby są w procentach (%), aw bardzo małej pamięci podręcznej, 5% takich jak teraz to powiedzmy 300 obiektów na sekundę, ale w bardzo dużych pamięciach podręcznych mówilibyśmy o tysiącach MB

Cóż, zostawiam cię na razie, komentarz Weź również pod uwagę tych, którzy powiedzieli mi, że nie mogą buforować i filtrować stron https (SSL) w squid 3.5 lub nowszym. Wkrótce je wam przyniosę, zaglądajcie na ten blog.