Aktualności - Moim zdaniem
Image
MOIM ZDANIEM
Autor

Partnerstwo firm Citrix i Microsoft było burzliwe i interesujące od zawsze - niezależnie od tego, czy w modzie były akurat usługi terminalowe, czy wirtualizacja i chmury obliczeniowe. Wielu zadaje sobie pytanie, czy na dłuższą metę da się współpracować oferując niemalże identyczne produkty na wąskim jak by nie patrzeć rynku, w tym przypadku hypervisorów? Citrix mówi, że się da i że nie konkuruje z Microsoftem - a co na to Microsoft?

21.10.2010
19.10.2010
16.07.2010
Image
Nowe oprogramowanie do serwerów sieciowych QNAP – wersja V3.3
01.07.2010
QNAP Systems udostępnił nową wersję firmware do obsługi swoich dysków sieciowych NAS. Aktualizacja V3.3 wprowadza nowe funkcje oraz udoskonalenia,...  
Analitycy Gartnera i IDC są zgodni: na umowie VMware-Novell skorzystają klienci obu firm – i one same
24.06.2010
W tym miesiącu firmy VMware i Novell ogłosiły rozszerzenie strategicznego partnerstwa o nową umowę OEM, na mocy której VMware będzie dystrybuował i...  
Nowe produkty HP do zarządzania usługami
22.06.2010
HP zaprezentował nowe produkty do zarządzania usługami, które pomogą klientom wdrażać hybrydowe modele dostarczania aplikacji. Obejmują one...  
Oracle prezentuje pakiet oprogramowania Oracle Business Process Management Suite 11g
22.06.2010
Firma Oracle zaprezentowała pakiet oprogramowania Oracle Business Process Management Suite 11g, który pozwoli klientom obniżyć koszty, lepiej...  
Cryptzone zaprezentował AppGate Satellite
18.06.2010
Cryptzone przedstawił dziś nowy pomysł dotyczący kontroli dostępu do sieci – AppGate Satellite. Jest to sposób na budowę bezpiecznych wirtualnych...  
Asmax prezentuje nowe urządzenie klasy NAS
18.06.2010
W ofercie Veracomp jest już dostępne nowe rozwiązanie kategorii NAS - Asmax GIGA NAS-Print Serwer. Jest to jedno z najmniejszych urządzeń NAS,...  
Oracle rozszerza ofertę rozwiązań do wirtualizacji komputerów biurkowych
14.06.2010
Nowy klient Sun Ray oraz nowa wersja oprogramowania Oracle Virtual Desktop Infrastructure zapewniają wyższy poziom wydajności, elastyczności i...  
Niższe ceny na serwery i dyski sieciowe QNAP
14.06.2010
EPA Systemy wprowadziła nowy cennik na dyski i serwery sieciowe QNAP. Podstawowe modele, kierowane głównie do odbiorców indywidualnych oraz małych...  
Nowy ProxyAV 1200 firmy Blue Coat chroni przed złośliwym oprogramowaniem
09.06.2010
Firma Blue Coat Systems rozszerzyła rodzinę urządzeń Blue Coat ProxyAV o model Blue Coat Proxy AV1200, służący do skanowania treści w czasie...  
Exploity – najczęściej wykorzystywane szkodliwe narzędzia w maju
08.06.2010
Kaspersky Lab prezentuje listę szkodliwych programów, które najczęściej atakowały użytkowników w kwietniu 2010 r. Podobnie jak w poprzednich...  
Image

Do czego służy ETag?

06.01.2010 19:32, Autor: Wojciech Kowasz (Docent), Komentarze (8)

Jeśli jesteś administratorem serwera WWW, to prawdopodobnie wiesz, czym jest ETag. Nie wszyscy jednak wiedzą, jak dokładnie ten mechanizm działa i czasem warto sprawdzić, czy aby w naszym środowisku działa zgodnie z przeznaczeniem - zdarza się, że drobne przeoczenie zmusza klientów do niepotrzebnego pobierania tony grafik i plików CSS, co wydłuża czas dostępu do strony i generuje niepotrzebny ruch sieciowy. Przez pewien moment sami mieliśmy z ETagiem do czynienia, co skłoniło nas do głębszej analizy, a przy okazji poznaliśmy kilka ciekawych faktów.

W skrócie, czym jest ETag? Jest to nagłówek HTTP wysyłany w odpowiedzi przez serwer WWW, który zawiera pewien ciąg znaków unikalny dla danej wersji konkretnego pliku. Kiedy pobieramy plik z serwera po raz pierwszy, zapisujemy razem z nim w pamięci podręcznej ten właśnie ETag i przy następnym wywołaniu tego pliku pytamy, czy na serwerze jest plik o innym ETagu niż posiadany przez nas. Jeśli tak (czyli jeśli plik się zmienił), to go pobieramy ponownie. Jeśli nie, to serwer odpowiada komunikatem 304 Not Modified i na tym wywołanie się kończy, a przeglądarka wie, że może śmiało użyć swojej kopii pliku.

No dobrze, to jak się liczy taki ETag? Jednoznacznej odpowiedzi na to pytanie nie ma :-) Każdy producent serwerów WWW robi to po swojemu, nie każdy jednak chętnie chce się nim dzielić ze światem. Ogólnie jednak oczywiście wiadomo, że wpływ na wartość tego parametru ma między innymi data modyfikacji pliku. W serwerach IIS, których używamy, dodatkowo po znaku ":" serwer umieszcza obliczaną przez siebie "wersję pliku". Trochę na ten temat można przeczytać w artykule KB922703, ale Microsoft nie publikuje szczegółów na temat swojego algorytmu ETagów.

Już na tym etapie administratorzy klastrów WWW mają mały problem - jeśli jest kilka frontendów, a każdy oblicza sobie samodzielnie i niezależnie ETag (przynajmniej jego drugą część), to przy założeniu, że klienci wpadają w losowy węzeł klastra mogą za każdy razem dostawać inne ETagi i w nieskończoność pobierać niepotrzebnie te same pliki. Ten problem jest dość dobrze znany, na blogu IIS.net został opisany jeszcze trzy lata temu i tak naprawdę w wersji 7.0 już nie istnieje. Domyślnie IIS 7.0 wpisuje bowiem "0" jako numer wersji, co eliminuje losowość i pozwala ujednolicić ETag na wszystkich węzłach. W starszych wersjach IIS numer "0" możemy natomiast wymusić (warto jednak zapoznać się wcześniej z linkowanym już przeze mnie wcześniej artykułem KB922703 oraz KB900245).

Do hostingu dobrychprogramów, TechIT, Gamikaze i wszystkich usług towarzyszących używamy Windows Server 2008, więc i IIS 7.0. Pomimo tego w pewnym momencie zauważyliśmy, że w przypadku niektórych plików z każdym wywołaniem ETag jest inny, a zapisując jego wartości doszliśmy do wniosku, że jest ich tyle, ile węzłów w klastrze NLB. Co się stało? Powód był oczywisty - te same pliki na różnych serwerach (tak, replikujemy zawartość WWW pomiędzy frontendami, co ma szereg naszym zdaniem dużych zalet i małych wad, o czym może kiedy indziej) mają różne daty. Jak to się jednak stało? Odpowiedź na to pytanie nie była już taka oczywista.

Ostatecznie okazało się, że w procesie kopiowania kolejnych wersji witryny z serwera deweloperskiego na produkcyjne wykorzystywany był protokół FTP, który kopiując plik zamienia datę modyfikacji na bieżącą. Dodając do tego fakt, że ostatecznym miejscem docelowym jest przestrzeń DFS (czyli kopiowane pliki wpadają na losowy węzeł) i to, że usługa DFSR nie replikuje metadanych plików takich jak daty, mieliśmy już kompletne rozwiązanie. Po kilku cyklach kopiowania część plików, na przykład style CSS, na każdym serwerze miała inną datę.

Rozwiązanie? Na początek trzeba ujednolicić daty na wszystkich serwerach. Później rozwiązań jest kilka. Najlepiej nie kopiować w ogóle niezmienionych plików, ale nie zawsze jest to rozwiązanie najprostsze. My pilnujemy po prostu, by wszystkie pliki kopiowane były przy pomocy SMB, który zachowuje daty modyfikacji (dla przyspieszenia procesu na wąskich łączach można całość wcześniej spakować). I życie stało się prostsze - także dla Waszych przeglądarek ;-)

Komentarze

olo
07.01.2010 12:03

olo
 

dobrze wiedzieć, że coś takiego jest ;)

 
jankowal
(niezalogowany)
09.01.2010 10:49

jankowal (niezalogowany)
 

Chciałbym się dowiedzieć którzy to producenci serwerów niechętnie dzielą się informacjami na temat ETag?

 
Docent
09.01.2010 11:45

Docent
 

@jankowal:

Microsoft?

 
jankowal
(niezalogowany)
09.01.2010 14:46

jankowal (niezalogowany)
 

Ok, rozumiem.

Czy w takim razie zdanie:
"Każdy producent serwerów WWW robi to po swojemu, nie każdy jednak chętnie chce się nim dzielić ze światem."
Nie powinno brzmieć:
"Każdy producent serwerów WWW robi to po swojemu, jednak Microsoft w przypadku IIS niechętnie chce się nim dzielić ze światem." ?

A kolejne:
"Już na tym etapie administratorzy klastrów WWW mają mały problem ... "
powinno brzmieć:
"Już na tym etapie administratorzy klastrów IIS WWW mają mały problem ... "?

 
Docent
09.01.2010 17:00

Docent
 

Wydaje mi się, że - bez urazy - trochę się czepiasz ;) Co do problemów administratorów klastra, to przecież z kontekstu całego posta wynika, że mowa o administratorach IIS - nawet w następnym zdaniu jest odniesienie do bloga IIS.net.

 
jankowal
(niezalogowany)
10.01.2010 11:52

jankowal (niezalogowany)
 

Wiem, wiem :)
Poprostu przy sobocie byłem trochę zgryźliwy.
Co nie zmienia faktu, że artykuł mi się bardzo podoba i myślę, że dla większości będzie bardzo pomocny. Jeśli mógłbym zasugerować kontynuację tego tematu, to mógłbyś poruszyć sprawę ETag w YSlow, gdzie sugerują wyłączenie ETag dla farm serwerów, ze względów na trudności konfiguracji (czyli opisują przypadek problemu który Ty rozwiązałeś), jako przykład, że narzędzia testujące nie zawsze mają racje :)

 
Limak
29.01.2010 0:07

Limak
 

Ciekawy artykuł/wpis :) zasade dzialania 304 znam, ale nigdy do glowy by mi nie przyszło, że może wystąpić problem który opisałeś - teraz, juz po przeczytaniu, wydaje się to oczywiste;)
Swoja droga, sprawdzales czy w kliencie ftp nie można zmienić opcji nadpisywania dat utworzenia/modyfikacji|?

@jankowal: troche sie czepiasz ;) Apache, Nginx i inne są opensoruce, wiec nic nie jest tajne, w tym generowanie ETag. Microsoft mógłby przedstawić dokumentacje, ale nie przedstawił... bywa;)

 
lolek
(niezalogowany)
29.03.2010 12:47

lolek (niezalogowany)
 

Apache opiera ETag na na numerze inode, w przypadku farmy serwerów Apache chyba lepiej ETag wyłączyć, niż zmieniać to zachowanie, szczególnie, że przeglądarkom w zupełności wystarcza w nagłówku data ostatniej modyfikacji.

 

Dodaj komentarz

Autor: