Kiedy użyć serwera Mongrel a kiedy serwera Thin?

Posted by Szymon Jeż Wed, 03 Dec 2008 18:46:00 GMT

Dużo się słyszy, że serwer aplikacji Thin (i Ebb itp. “evented serwers”) jest szybszy od standardowego sposobu uruchamiania aplikacji webowych ze świata Ruby (np. Ruby on Rails, Merb) serwera Mongrel. Też słyszałem i bez większej analizy wierzyłem, ale coś mi nie grało. Bo skoro są szybsze i lepsze to dlaczego w ogóle używać Mongrela? Niezawodność, popularność – myślałem – pewnie to powód, dla którego wszyscy tłumnie nie rzucili się na inne rozwiązania.

Oglądając wystąpienie Ezra Zygmuntowicz: Strengthening the Ruby Ecosystem Part II: Merb z konferencji MountainWest RubyConf 20081 usłyszałem, że:
  • Mongrel lepiej się sprawdza do aplikacji, które mają różne, często lub w większości długie (2-3 i więcej sekund) czasy odpowiedzi na żądania (powodować to mogą: długie strony, wysyłane w tle e-maile, zapytania do zewnętrznych web serwisów itp.). Działa on tak, że nie blokuje jednym długo obsługiwanym żądaniem pozostałych.
  • Thin, Ebb, EventedMongrel – mimo, iż znacznie szybciej (gdyż nie mają narzutu jaki jest obecny w Mongrelu w postaci osobnych wątków dla każdego żądania) radzą sobie z obsługą żądań obsługiwanych w podobnie krótkim czasie (przeważnie tylko to sprawdzą syntetyczne testy wydajności2), to jedno długo obsługiwane żądanie blokuje pozostałe (event loop block).
  • Czyli, Mongrel jest lepszy w typowej aplikacji webowej, a w szczególnym przypadku gdy żądania trwają ułamki sekund należy rozważyć zastosowanie serwerów “event driven”.

Dodatkowa konkluzja jaka mi się nasuwa (oprócz powszechnie znanej, ale często zapominanej lub ignorowanej z lenistwa, zasady: dobrze jest znać swoje narzędzia i technologie z których się korzysta) jest taka aby ostrożnie interpretować wyniki obserwacji (szczególnie odnośnie testów wydajności przeprowadzanych przez różnych entuzjastów krzyczących, że coś jest lepsze) i nie wyciągać pochopnych za daleko idących wniosków (to, że w tym teście działa, nie znaczy, że zawsze tak będzie bo test ma ograniczony zakres).

Czy to znaczy, że wszystko trzeba empirycznie sprawdzić samemu? Nie koniecznie. Z pomocą przychodzą nam tu autorytety, ale do nich też należy trzeba podchodzić z odpowiednią dla nich rezerwą.

Zależność jest chyba taka, że im więcej od czegoś coś dla nas zależy, tym dokładniej to sprawdźmy albo sami albo z pomocą innych godnych tego, nie polegając jedynie na opinii (jak mawiał amerykański pisarz Napoleon Hill “opnie to najtańszy towar świata”) ale na faktach.

Na zakończenie. Szkoda, że nie ma bezkompromisowego pozbawionego minusów serwera:

To chyba nie kundel ale co tam... nikt nie zauważy

Thin Mongrel (ang. Chudy Kundel) ;P

1 Ezra mówi o tym pomiędzy 14 a 17 minutą nagrania

2 patrz narzędzia do benchmarków HTTP ab i httperf i tym podobne.

Posted in ,  | Tags , , ,  | no comments | no trackbacks