Która z nich jest lepszą opcją do wykorzystania obok aplikacji "latest rails"? Kundel, cienki, WEBrick i pasażer

Grałem i oceniałem inne opcje domyślnego serwera WEBrick rails i Thin był najbardziej bezbolesną i czystą rzeczą, która działała bardzo dobrze!!

Który z tych Kundli, cienkich, WEBrick i Passenger byście polecili i dlaczego..? czy istnieją jakieś korzyści skalowalności (Cluster friendly lub configs, które mogą obsługiwać jakąś skalę), które pochodzą z dowolnego z tych serwerów.. a może skalowalność powinna być parametrem podczas ich oceny?

Author: brucewayne, 2012-10-27

3 answers

Dipak już odpowiedział na połowę twojego pytania, ale pozwól mi wyjaśnić trochę rzeczy. (Jestem jednym z autorów Phusion Passenger.)

    WEBrick to zabawkowy serwer internetowy. Nikt nie używa go w niczym poza rozwojem, ponieważ działa słabo i mówi się, że wycieka pamięć. Mówiłeś, że cienkie działa dobrze. Czy skonfigurowałeś go już w konfiguracji odwrotnego serwera proxy? Bo tak robią ludzie w scenariuszach produkcyjnych. Nie jest bezpiecznie narażać cienkiego (lub Kundla, lub jednorożca) bezpośrednio do Internetu.
  • Możesz być zainteresowany przeczytaniem Ruby on Rails server optionsi The Phusion Passenger architectural overview, aby uzyskać więcej szczegółowych wyjaśnień.

Jeśli chodzi o skalowalność, nie ma dużej różnicy. Wszystkie działają bardzo podobnie w produkcji, wszystkie skalują się mniej więcej w ten sam sposób, a wszelkie problemy, które napotkasz, będą najprawdopodobniej spowodowane przez Twoją aplikację lub Rails. Z wyjątkiem WEBrick ' a, którego naprawdę nie powinieneś zastosowanie w produkcji. Możesz zobaczyć różnicę w benchmarkach hello world, ale to wszystko. Podczas produkcji większość czasu będzie spędzana w aplikacji, więc wszelkie drobne różnice prędkości widoczne w benchmarkach hello world staną się całkowicie niewidoczne.

Są jednak pewne subtelności, o których należy pamiętać.

  • Phusion Passenger zapewnia funkcję zwaną kolejką globalną. Rozwiązuje konkretny problem, wyjaśniony szczegółowo w instrukcji . Domyślnie Nginx i proxy Apache wnioski w sposób okrągły, więc cierpią z tego problemu, podczas gdy pasażer Phusion nie. Istnieją sposoby na obejście tego, gdy nie używasz Phusion Passenger, ale wymagają one określonej konfiguracji lub instalacji dodatkowych modułów serwera www.
  • Model wejścia / Wyjścia może, ale nie musi być ważny w zależności od charakteru aplikacji. Kundelki, cienkie, jednorożce, wszystkie są wielowątkowe, jednowątkowe. Działa to świetnie w przypadku tradycyjnych aplikacji internetowych, które wyszukują rzeczy w lokalna baza danych i renderuje coś, ale ssie głównie dla aplikacji, które wykonują wiele połączeń HTTP API lub w inny sposób muszą dużo czekać na I/O. dlaczego Rails 4 Live Streaming to wielka sprawa wyjaśnia to szczegółowo.

    Phusion Passenger jest również wielowątkowością, ale Phusion Passenger Enterprise obsługuje wielowątkowość. Phusion Passenger Enterprise jest komercyjnym wariantem open source Phusion Passenger, z wieloma funkcjami przydatnymi dla środowiska produkcyjne na dużą skalę.
  • w dużych środowiskach produkcyjnych niektóre funkcje stają się ważne, np. rolling restarts, not showing anything wrong when a deployment failed, itp. Kundel, cienki, Jednorożec, pasażer Phusion, wszystkie ujawniają te funkcje w pewnym stopniu, ale niektóre wymagają większego wysiłku administratora niż inne. Na przykład, aby zaimplementować ponowne uruchamianie w Kundel i Thin, potrzebujesz sporo kroków w skryptach wdrażania. Jednorożec nie wymaga tylu kroków, ale i tak znacząco. To właśnie tutaj błyszczy Phusion Passenger Enterprise: wykorzystuje wszystkie te funkcje i przekształca je w jedną opcję konfiguracji. Włącz tę opcję, a oprogramowanie zajmie się resztą.

Więc wybierz opcję, którą uważasz za najlepszą dla Twojego scenariusza.

 9
Author: Hongli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:32:41

Najprościej skonfigurować do produkcji będzie prawdopodobnie Apache i mod_rails (passenger). Jeśli chcesz korzystać z nowego hotness, można dać nginx i pasażera wir.

Dla rozwoju kundel jest zwykle najłatwiejszy do pracy. Większość Windows IDE (RadRails, Netbeans) daje Ci możliwość korzystania z Webrick lub Kundel do prac programistycznych i pozwala kontrolować serwery z samego IDE.

Update

Cztery Wybory

Są naprawdę Cztery opcje, no cóż, Plus WEBrick, ale byłby to nietypowy wybór dla serwera produkcyjnego. W przybliżeniu w kolejności rosnącej złożoności...

Nginx + Kundel nginx + pasażer Apache + Kundel Apache + Pasażer (Istnieje Phusion pasażer Standalone, ale to naprawdę pasażer nginx + skompilowany razem, więc nie liczę go, chociaż może to być dobra opcja dla niektórych osób.)

Większa strona może następnie dodać warstwę specjalistyczną 7 hardware (NetScaler, F5,...) przed serwerami.

 1
Author: Dipak Panchal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-29 04:18:23

Cienki jest tak łatwy jak klejnot "cienki" dla rozwoju i produkcji

 0
Author: Nick Ginanto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-29 04:20:24