Blog (40)
Komentarze (807)
Recenzje (3)

Dlaczego IIS zjada dysk?

@DocentDlaczego IIS zjada dysk?12.01.2012 23:52

Serwery WWW obsługujące dobreprogramy są w całości zwirtualizowane, a co za tym idzie, ich dyski to nie talerze ani komórki pamięci Flash (przynajmniej nie wprost), ale wykrojone na miarę obszary na prawdziwych woluminach, które to notabene też nie są do końca prawdziwe, bo są to tylko wirtualne LUNy stworzone z kilku czy kilkunastu fizycznych dysków twardych. Możliwość krojenia na miarę jest bardzo interesująca i warto przemyśleć, ile tak naprawdę przeznaczyć gigabajtów na dysk systemowy, dyski na dane, dyski na logi czy pliki tymczasowe i tak dalej.

Jeśli korzystacie z maszyn wirtualnych na swoich komputerach, to z dużym prawdopodobieństwem używacie do tego celu tzw. cienkich dysków (thin-provisioned ). Dyski takie, choć mają pojemność np. 50 GB, początkowo fizycznie liczą kilka megabajtów. Następnie rosną wraz z rosnącą ilością danych na nich zapisywanych. Niestety ten proces "stopniowego przyrostu" jest kłopotliwy, pochłania zasoby i w efekcie spowalnia operacje I/O na dysku. Dlatego tam, gdzie liczy się wydajność, a mniej mobilność, dokonuje się początkowej alokacji 100% powierzchni takiego wirtualnego dysku. Czyli dysk wirtualny czy jest pusty, czy jest pełny, zajmuje zawsze np. 50 GB. Pytanie teraz: jak pogodzić chęć szybkiego przenoszenia dysków pomiędzy fizycznym magazynem danych (np. z macierzy na macierz), szybkiego robienia backupów blokowych (backupów całych dysków) z chęcią posiadania szybkiego dostępu do danych :) Teoretyczna odpowiedź jest prosta: trzeba kroić jak najmniejsze dyski.

A w praktyce? Wydaje się, że Windows, którego używamy przecież na wszystkich ważnych serwerach, jest tu wręcz obżartuchem jeśli chodzi o przestrzeń dyskową. Gdy migrowaliśmy kilka lat temu na serwery wirtualne (i przy okazji z Windows Server 2003 na Windows Server 2008) mieliśmy niewielkie doświadczenie w kwestii potrzeb dyskowych nowego serwerowego systemu Microsoftu. Zdecydowaliśmy się jednak na bardzo niewielkie dyski systemowe 30 GB. Ostatecznie zawsze można je rozszerzyć (choć często ze stratą dla wydajności). Praktyka kilku lat pokazała, że nie ma z tym żadnego problemu i spokojnie można zmieścić się na takim dysku, o ile wyrzucimy z niego wszystkie logi. Sama witryna główna portalu dobreprogramy, czyli bez grafik, CSSów i dodatkowych elementów, tylko na jednym węźle (serwerze) klastra generuje dziennie blisko 500 MB logów w pliku tekstowym. Wymienione przeze mnie elementy dodatkowe serwujemy z oddzielnej domeny dla poprawy wydajności i tam log jest jeszcze większy. Na szczęście efektywność pakowania czystego tekstu jest bardzo zadowalająca ;)

Do napisania tego wpisu skłoniło mnie jednak coś, przez co kiedyś zwątpiłem w możliwość zmieszczenia się na 30 GB.

Tak, powyższe trzy akapity to był wstęp :P

W pewnym momencie, właściwie już po kilku miesiącach, okazało się, że miejsce się kończy i zaczęliśmy się zastanawiać, dlaczego. Czy to poprawki? W końcu co miesiąc jakieś tam się instalują. Czy to cache? Pliki tymczasowe? Zaczęliśmy szukać. Okazało się, że winne były pliki logów sterownika http.sys, czyli najważniejszego komponentu serwera webowego, który pracuje w trybie jądra i odpowiada za obsługę wywołań HTTP. W ciągu godziny w szczycie oglądalności potrafi on logować około 5-7 MB informacji. Pytanie czy potrzebnych? W zasadzie wszystkie wpisy to błędy Timer_ConnectionIdle.

Tak naprawdę jednak to... wcale nie błędy. Jest to zupełnie naturalne i pożądane zachowanie protokołu HTTP. Dotyczy sytuacji, w której klient (czyli Wasza przeglądarka) decyduje się nie rozłączać połączenia TCP z naszym serwerem WWW, bo przewiduje - zwykle słusznie - że za bardzo krótką chwilę nastąpi kolejne połączenie. Istotnie w większości przypadków ma rację, bo jedna odsłona naszego portalu to kilkanaście albo nawet kilkadziesiąt wywołań - pobieracie przecież nie tylko dokument HTML, ale także grafiki, style CSS, skrypty... Czasami jednak zdarza się, że pozostawione połączenie nie zostanie wykorzystane. Wtedy następuje timeout i nasz serwer je zamyka, by mógł połączyć się ktoś inny.

Logowanie tych "błędów" jest w Windows Server 2008 włączone domyślnie, co na serwerach obsługujących tak duży ruch jak nasz może być zabójcze. Szybki rzut oka w artykuł KB820729 pozwala jednak dotrzeć do ustawień rejestru, które umożliwiają ograniczenie lub nawet całkowite wyłączenie logowania przez http.sys. Dzięki dostosowaniu tych parametrów do własnych potrzeb i opracowaniu właściwej polityki retencji logów (również przenosząc lokalizację tych plików na inny dysk, co zazwyczaj jest dobrym pomysłem) można z powodzeniem zmieścić system na dysku 30 GB, i to z naprawdę sporym zapasem! Jeśli administrujecie serwerem IIS, sprawdźcie katalog C:\Windows\System32\LogFiles\HTTPERR - jest spora szansa, że znajdziecie tam parę gigabajtów. Wasza macierz Wam za to podziękuje ;)

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.