2009-09-17 16 views
5

Planuję wdrożyć stronę z silnikiem Django. Ale czuję się zagubiony w kwestii wyboru serwerów internetowych, w tym apache, lighttpd, nginx i innych.Jak ocenić wydajność serwerów internetowych?

Przeczytałem kilka artykułów na temat wydajności każdego z tych wyborów. Ale wydaje się, że nikt się nie zgadza. Zastanawiam się, dlaczego samemu nie przetestować występu?

Nie mogę znaleźć informacji o najlepszym podejściu do serwerów WWW testowania wydajności. Więc moje pytania to:

  1. Czy istnieje łatwe podejście do testowania wydajności bez witryny produkcyjnej?
  2. A może mam metodę symulowania dużego ruchu, aby przeprowadzić rzetelny test?
  3. Jak mogę utrzymać mój test w uczciwy i bliski sytuacji produkcji?

Po badaniu, chcę dowiedzieć się:

  1. Dlaczego niektórzy z nich mówią nginx ma lepszą wydajność przy obsłudze plików statycznych.
  2. Wymagania procesora i pamięci każdego serwera.
  3. Mój najlepszy wybór.

Odpowiedz

3

Narzędzia, takie jak ab są powszechnie wykorzystywane do testowania ile obciążenie można wziąć ze bicie wniosków na raz, obok kaktusów/Munin/narzędzie do monitorowania systemu lub wybór można wygenerować dane dotyczące obciążenia systemu & żądań/s . Problem z tym, że testy porównawcze wielu ludzi nie zdają sobie sprawy z tego, że muszą zażądać wielu różnych żądań, ponieważ różne części kodu są wykonywane w różnym czasie. Ważny jest również profilowanie i testowanie kodu, a nie próśb, do których wiele osób ma already done so for django, benchrun również nie jest złym narzędziem.

Inną kwestią jest liczba żądań HTTP dla każdego wyświetlenia strony. Mniejsza liczba żądań i im szybciej można je przetworzyć, to klucz do posiadania witryn, które mogą utrzymywać duży ruch, ponieważ im szybciej możesz zakończyć i zamknąć połączenia, tym szybciej przydzielasz zasoby nowym.

Pod względem ogólnej szybkości serwerów internetowych oczywiste jest, że serwer proxy (działający wstecz na końcu) będzie zawsze działał szybciej niż serwer WWW ze statyczną zawartością. Jeśli chodzi o Apache vs nginx w odniesieniu do twojej aplikacji django, wydaje się, że mod_python jest rzeczywiście szybszy niż nginx/lighty + FastCGI, ale nie jest to niespodzianką, ponieważ CGI, niezależnie od jakichkolwiek przyspieszeń, jest wciąż powolne. Wykonywanie i buforowanie kodu na serwerze internetowym i pozwalanie mu na zarządzanie jest zawsze szybsze (mod_perl vs używanie CGI, mod_php vs CGI, itp.), Jeśli robisz to dobrze.

+2

Problem z nginx/lighty + wsgi działa nieco głębiej, niż mogłoby się wydawać: http://blog.dscpl.com.au/2009/05/blocking-requests-and-nginx-version-of.html –

1

Musisz ustawić serwer WWW i wybraną witrynę internetową na komputerze gdzieś, najlepiej fizycznym urządzeniu o podobnej specyfikacji sprzętowej do tej, którą ostatecznie będziesz wdrażać.

Następnie należy użyć platformy testowania obciążenia, na przykład The Grinder (bezpłatnie), aby zasymulować wielu użytkowników korzystających z witryny w tym samym czasie.

Struktura testowania obciążenia powinna znajdować się na oddzielnych komputerach i monitorować wykorzystanie sieci i procesora również w tych maszynach, aby upewnić się, że czynnikiem ograniczającym testowanie jest w rzeczywistości serwer WWW, a nie obciążenie. wtryskiwacze.

Poza tym chodzi tylko o zmianę zawartości i czasu reakcji na monitorowanie, przepustowość, wykorzystanie pamięci i procesora itp. ... aby zobaczyć, jak się zmieniają w zależności od używanego serwera WWW i rodzaju hostowanej treści.

2

Apache JMeter to doskonałe narzędzie do testowania aplikacji internetowych. Może być używany z dowolnym serwerem WWW, a nie tylko z Apache.

Powiązane problemy