Jak przeprowadzić test wydajności serwera WWW?

Czy znasz średni czas reakcji swojej witryny? Czy wiesz, ilu równoczesnych użytkowników może obsłużyć Twoją witrynę?


Testowanie obciążenia jest niezbędne, aby aplikacje internetowe mogły poznać witrynę Pojemność. Jeśli chcesz wybrać serwer WWW, jedną z pierwszych rzeczy, które chcesz zrobić, jest przeprowadzenie testu obciążenia i sprawdzenie, który z nich działa dobrze.

Benchmarking może pomóc ci zdecydować;

  • Który serwer internetowy działa najlepiej
  • Liczba serwerów, które musisz obsłużyć x liczba żądań
  • Która konfiguracja daje najlepsze wyniki

Istnieje kilka narzędzi online do przeprowadzenia testu warunków skrajnych; Jeśli jednak szukasz rozwiązania wewnętrznego lub chcesz porównać tylko wydajność serwera WWW, możesz użyć ApacheBench i alternatywnie niektóre z niżej wymienionych narzędzi.

Użyłem Apache & Serwer WWW Nginx hostowany na DigitalOcean przetestować to.

ApacheBench

ApacheBench (ab) to program wiersza polecenia typu open source, który współpracuje z dowolnym serwerem WWW. W tym poście wyjaśnię, jak zainstalować ten mały program i wykonać test obciążenia, aby porównać wyniki.

Apacz

Zainstalujmy ApacheBench za pomocą polecenia yum.

mniam zainstalować narzędzia httpd

Jeśli masz już narzędzia httpd, możesz to zignorować.

Zobaczmy teraz, jak radzi sobie z 5000 żądaniami przy współbieżności 500.

[[chroniony e-mailem] ~] # ab -n 5000 -c 500 http: // localhost: 80 /
To jest ApacheBench, wersja 2.3 <Wersja $: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licencjonowany przez The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (bądź cierpliwy)
Ukończono 500 wniosków
Zrealizowano 1000 wniosków
Zrealizowano 1500 wniosków
Zrealizowano 2000 wniosków
Zrealizowano 2500 wniosków
Zrealizowano 3000 wniosków
Zrealizowano 3500 wniosków
Zrealizowano 4000 wniosków
Zrealizowano 4500 wniosków
Ukończono 5000 wniosków
Ukończono 5000 wniosków
Oprogramowanie serwera: Apache / 2.2.15
Nazwa hosta serwera: localhost
Port serwera: 80
Ścieżka dokumentu: /
Długość dokumentu: 4961 bajtów
Poziom współbieżności: 500
Czas potrzebny na testy: 13.389 sekund
Uzupełnij wnioski: 5000
Nieudane żądania: 0
Błędy zapisu: 0
Odpowiedzi inne niż 2xx: 5058
Łącznie przesłane: 26094222 bajtów
Przesłany HTML: 25092738 bajtów
Liczba żądań na sekundę: 373,45 [# / s] (średnia)
Czas na żądanie: 1338.866 [ms] (średnia)
Czas na żądanie: 2,678 [ms] (średnio, dla wszystkich jednoczesnych żądań)
Szybkość transferu: 1903.30 [Kb / s] odebrano
Czasy połączeń (ms)
min średnia [+/- sd] mediana maks
Połącz: 0 42 20,8 41 1000
Przetwarzanie: 0428 2116 65 65 13310
Oczekiwanie: 0416 217,7 55 13303
Ogółem: 51470 2121 102 102 13378
Procent żądań obsłużonych w określonym czasie (ms)
50% 102
66% 117
75% 130
80% 132
90% 149
95% 255
98% 13377
99% 13378
100% 13378 (najdłuższe zapytanie)
[[chroniony e-mailem] ~] #

Jak widać, Apache sobie poradził 373 wniosków na sekundę, i obsłużenie wszystkich żądań zajęło łącznie 13 389 sekund.

Teraz wiesz, że domyślna konfiguracja może obsłużyć wiele żądań, więc po wprowadzeniu jakichkolwiek zmian konfiguracji możesz ponownie wykonać test, aby porównać wyniki i wybrać Najlepsza jeden.

Nginx

Zróbmy test tego, co zrobiliśmy dla Apache, abyś mógł porównać, który z nich działa lepiej.

[[chroniony e-mailem] ~] # ab -n 5000 -c 500 http: // localhost: 80 /
To jest ApacheBench, wersja 2.3 <Wersja $: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licencjonowany przez The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (bądź cierpliwy)
Ukończono 500 wniosków
Zrealizowano 1000 wniosków
Zrealizowano 1500 wniosków
Zrealizowano 2000 wniosków
Zrealizowano 2500 wniosków
Zrealizowano 3000 wniosków
Zrealizowano 3500 wniosków
Zrealizowano 4000 wniosków
Zrealizowano 4500 wniosków
Ukończono 5000 wniosków
Ukończono 5000 wniosków
Oprogramowanie serwera: nginx / 1.10.1
Nazwa hosta serwera: localhost
Port serwera: 80
Ścieżka dokumentu: /
Długość dokumentu: 3698 bajtów
Poziom współbieżności: 500
Czas potrzebny na testy: 0,758 sekund
Uzupełnij wnioski: 5000
Nieudane żądania: 0
Błędy zapisu: 0
Łącznie przesłane: 19660000 bajtów
Przesłany HTML: 18490000 bajtów
Liczba żądań na sekundę: 6593.48 [# / sec] (średnia)
Czas na żądanie: 75,832 [ms] (średnio)
Czas na żądanie: 0,152 [ms] (średnio, dla wszystkich jednoczesnych żądań)
Szybkość transferu: 25317.93 [Kb / s] odebrano
Czasy połączeń (ms)
min średnia [+/- sd] mediana maks
Połącz: 0 6 11,0 2 53
Przetwarzanie: 5 19 8,2 17 53
Oczekiwanie: 0 18 8,2 16 47
Razem: 10 25 17,4 18 79
Procent żądań obsłużonych w określonym czasie (ms)
50% 18
66% 21
75% 21
80% 22
90% 69
95% 73
98% 75
99% 76
00% 79 (najdłuższe zapytanie)
[[chroniony e-mailem] ~] #

ŁAŁ! Widziałeś to? Obsługiwany Nginx 6593 żądań na sekundę! Zwycięzca.

Widzisz więc, porównując z dwoma serwerami internetowymi, dowiesz się, który wybrać dla swojej aplikacji internetowej.

Powyższy test dotyczy CentOS 6.8, wersja 64-bitowa. Możesz wypróbować wiele kombinacji systemu operacyjnego & Wersja serwera WWW dla optymalnych rezultatów.

OBLĘŻENIE

OBLĘŻENIE to narzędzie do testowania obciążenia HTTP obsługiwane w systemie UNIX. Możesz umieścić wiele adresów URL w pliku tekstowym, aby załadować test. Możesz zainstalować oblężenie za pomocą yum.

# yum zainstalować oblężenie

Przeprowadźmy test z 500 jednoczesnymi żądaniami przez 5 sekund.

[[chroniony e-mailem] ~] # oblężenie -q -t 5S-c 500 http: // localhost /
Zniesienie oblężenia serwera … gotowe.
Transakcje: 4323 trafień
Dostępność: 100,00%
Upływający czas: 4,60 sek
Przesyłane dane: 15,25 MB
Czas reakcji: 0,04 sek
Szybkość transakcji: 939,78 trans / sec
Przepustowość: 3,31 MB / s
Współbieżność: 37,97
Pomyślne transakcje: 4323
Nieudane transakcje: 0
Najdłuższa transakcja: 1,04
Najkrótsza transakcja: 0,00
[[chroniony e-mailem] ~] #

Aby rozbić parametry.

-q – aby uruchomić go cicho (nie pokazuje szczegółów żądania)

-t – biegnij przez 5 sekund

-c – 500 równoczesnych żądań

Jak widać, dostępność wynosi 100%, a czas reakcji wynosi 0,04 sekundy. Możesz dostosować parametr testu obciążenia w zależności od celu.

Gobench

Gobench jest napisany w języku Go i prostym narzędziu do testowania obciążenia w celu porównania wydajności serwera WWW. Obsługuje ponad 20 000 jednoczesnych użytkowników, czego nie obsługuje ApacheBench.

Apache JMeter

JMeter jest jednym z najpopularniejszych narzędzi open source do pomiaru wydajności aplikacji internetowych. JMeter jest aplikacją opartą na Javie i nie tylko serwerem WWW, ale można go używać przeciwko PHP, Java. ASP.net, SOAP, REST itp.

JMeter ma przyzwoity przyjazny interfejs GUI, a najnowsza wersja 3.0 wymaga Java 7 lub wyższej, aby uruchomić aplikację. Musisz spróbować JMeter, jeśli Twoim celem jest optymalizacja wydajności aplikacji internetowej.

wrk

wrk to kolejne nowoczesne narzędzie do pomiaru wydajności, które obciąża serwer WWW i zapewnia opóźnienie, żądanie na sekundę, transfer na sekundę itp. szczegóły.

Za pomocą wrk możesz określić, aby uruchomić test obciążenia z wieloma wątkami.

Weźmy przykład przeprowadzania testu przez 5 minut z 500 jednoczesnymi użytkownikami z 8 wątkami.

wrk –t8 –c500 -d300s http: // localhost

HTTPLoad

Httpload może odczytać wiele adresów URL z pliku lub możesz podać go w argumencie polecenia. Najnowsza wersja obsługuje SSL / TLS, co oznacza, że ​​możesz zapytać o adres URL strony internetowej obsługującej HTTPS (SSL).

Podczas testowania adresu URL z włączonym protokołem SSL istnieje możliwość określenia szyfru, a proste polecenie testowe wyglądałoby tak.

httpload -cipher AES256-SHA -parallel 200 -seconds 120 URL_LIST.txt

Aby lepiej to zrozumieć, powyżej przeprowadzimy test na 200 równoczesnych użytkownikach przez 2 minuty.

Curl-loader

curl-loader jest napisany w C, aby symulować ładowanie aplikacji, i obsługuje SSL / TLS. Wraz z testem strony internetowej możesz także użyć tego narzędzia typu open source, aby wykonać ładowanie na serwerach FTP.

Możesz utworzyć plan testowy z mieszanką HTTP, HTTPS, FTP i FTPS w konfiguracji pojedynczej partii.

httperf

The httperf to narzędzie o wysokiej wydajności, które koncentruje się na testach porównawczych na poziomie mikro i makro. Obsługuje protokoły HTTP / 1.1 i SSL.

Jeśli spodziewasz się liczby równoczesnych użytkowników i chcesz sprawdzić, czy serwer może obsłużyć pewną liczbę żądań, możesz użyć następującego polecenia.

httperf –server localhost –port 80 –num-conns 1000 –rate 100

Powyższe polecenie przetestuje 100 żądaniami na sekundę dla 1000 żądań HTTP.

Tsung

Tsung to wieloprotokołowe rozproszone narzędzie do testowania warunków skrajnych w celu obciążenia serwera HTTP, SOAP, PostgreSQL, LDAP, XAMP, MySQL. Obsługuje HTTP / 1.0, HTTP / 1.1, a pliki cookie są obsługiwane automatycznie.

Generowanie raportu jest możliwe dzięki Tsung.

Wniosek

Mam nadzieję powyżej narzędzia do analizy porównawczej dać ci wyobrażenie o wydajności twojego serwera i pomóc zdecydować, co najlepiej pasuje do twojego projektu.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map