2012-04-13 12 views
12

myślałem zamiast używać:Go webserver, jak jest stabilność wydajności, w zakresie długoterminowej stabilności w porównaniu do Tomcat, Apache?

  • Tomcat
  • Apache
  • Lekki webserver
  • PHP
  • Ruby
  • JSP

Dlaczego nie przełączyć moich projektów Idź językiem. Ponieważ nie mam:

  • serwer WWW wbudowany w
  • I nawet nie trzeba polegać na PHP, Ruby, JSP
  • Go rozwiązuje cross-platform, takich jak: działa na FreeBSD, Linux, Solaris (Windows , Mac, Android, Tizen)
  • ani Apache Tomcat ani ani inny serwer wWW maintainence
  • prędkość przeglądarce byłoby strasznie szybciej niż innych języków skryptowych serwera wWW.

Ale martwię się jedną rzeczą: stabilnością serwera Go w porównaniu z innymi serwerami internetowymi.

Czy ktoś to zrobił wcześniej, czy tylko ja sam buduję takie projekty do produkcji seryjnej?

+0

Ruby ma również serwer WWW w standardowej bibliotece ('require 'webrick''), ale niekoniecznie musiałbym to ujawnić bezpośrednio użytkownikom. –

+0

Większość serwerów internetowych, takich jak Go, nie jest zaprojektowanych jako serwery w pełni funkcjonalne; ludzie zazwyczaj uruchamiają je jako serwery aplikacji za czymś takim jak Apache lub nginx.W ten sposób bardziej konfigurowalny interfejs może obsługiwać takie funkcje, jak buforowanie, równoważenie obciążenia, podawanie statycznych danych i tak dalej. –

+0

Czy "Bill the Lizard" po prostu _love_ nie zamyka pytań, które są rzeczywiście przydatne w StackOverflow ?! Oparte na jakiejś głupiej technice. Ta strona ma być praktycznym forum pytań i odpowiedzi dla prawdziwych światowych deweloperów i to pytanie świetnie się sprawdza (i tak samo jest z odpowiedzią). Jestem pewien, że czuje, że robi coś niesamowicie przydatnego w swoim życiu. Nie po raz pierwszy wpadłem na tę sytuację - stąd ten komentarz z wielu lat "watowania". –

Odpowiedz

20

Nie ma problemu stabilności.

Mam kilka serwerów internetowych w 100% w ruchu, który działa przez wiele miesięcy, obsługując około miliona zapytań miesięcznie bez żadnego problemu (głównie json, poprzez GET, POST i sieci web).

Są na 64 bity serwerów ubuntu, ale myślę, że masz trudności wytwarzania tyle plotkowali o 32 bitów błąd, zwłaszcza z serwerem WWW.

Nie używaj front-end, jeśli nie masz konkretnego powodu: Jest to łatwe do wykonania kompletnej aplikacji internetowych przy użyciu tylko Go.

Będziesz daleko od samotności. Moim zdaniem Go szczególnie dobrze nadaje się do budowy długo działających serwerów. Goroutines i kanały bardzo ułatwiają obsługę zarówno żądań użytkowników, jak i zadań długoterminowych (lub, na przykład, obsługę zapytań użytkowników po odpowiedzi na zapytanie http, co nie jest tak łatwe w PHP i zbyt wiele LOC w java jeśli chcesz zrobić to poprawnie).

+2

+1 Za rozmowę z doświadczeniem na ziemi. – Flavius

+0

Czy używasz określonego narzędzia do utrzymania aktywności i monitorowania procesów w systemie Ubuntu? – Blacksad

+0

Nie dzisiaj. Korzystam z usługi, która ostrzega mnie, gdy przestaję odpowiadać, ale ponieważ nigdy nie doświadczyłem wypadku w ucisku, nie odczuwam teraz presji. Myślę, że możesz użyć standardowego narzędzia, jeśli potrzebujesz. Zauważyłem, że cykl debugowania różni się od tego na przykład, java lub php: wykrywasz błędy bardzo szybko, albo podczas kompilacji, albo na pierwszych testach (przeważnie błędy indeksu tablicy lub mapa nie przydzielona ...), podczas gdy w większości przypadków błędy w innych językach są często ukryte. Lubię także używać narzędzia funkcyjnego "idź test". Dzięki temu kompilacja jest szybka i włączona do operacji. –

1

Zastosowanie Nginx jako front-end i upewnij się, że korzystasz z wersji 64-bitowej z Go. Wersja 32-bitowa ma poważne problemy ze stabilnością, które są zapowiedzią dla długotrwałych procesów.

+1

Czy możesz podać kilka linków do odpowiednich raportów o błędach i/lub grup dyskusyjnych/dyskusji w języku ML? Interesuje mnie również badanie pierwotnego pytania i chociaż twoje oświadczenie jest silne, wydaje się, że jest to trochę machające ręką; roszczenia takie jak ta powinny być poparte danymi. – kostix

+0

Oto wątek omawiający problemy z 32-bitowym. http://groups.google.com/group/golang-nuts/browse_thread/thread/ab1971bb9459025d/64241d28b02fa0db?lnk=gst – kristianp

+0

Należy pamiętać, że ten błąd może również pojawić się na 64-bitowych serwerach, ale jest tak rzadki, że na pewno nie będzie zobacz to, nawet na 32 bitach. Potrzeba było lat i określonego wzoru użycia pamięci, aby go wykryć. –

2

Dlaczego nie używając Wbudowany serwer WWW i skonfigurować serwer proxy odwrotnej jak lakier, albo niech Nginx działa jako proxy?

http://wiki.nginx.org/ReverseProxyCachingExample

+3

Dlaczego? Dlaczego miałbyś? Dodaje kolejną warstwę abstrakcji, którą należy utrzymywać i aktualizować. I tego właśnie wydawał się unikać. Dodawanie buforowania nie pomaga w stabilności, po prostu wydajności. Tylko w przypadku pamięci podręcznej może zapewniać dodatkową "stabilność"; ukrywanie przestojów. – Kissaki

Powiązane problemy