Apache Benchmark + GNUPlot: mierz i twórz wykresy wydajności serwera internetowego

Nie ma znaczenia, czy jest używany nginx, Apache, Lighttpd lub w inny sposób, każdy administrator sieci, który ma serwer WWW, będzie chciał w pewnym momencie wiedzieć, jak szybko serwer WWW odpowiada na określoną liczbę zapytań.

Zarządzanie serwerem usług zarządzanych e1368625038693

Benchmark Apache + GNUPlot

Tym razem użyjemy narzędzia o nazwie Benchmark Apache, który chociaż ma w nazwie „apache”, nie służy tylko do mierzenia wydajności Apache, ale może być również używany do Nginx i innych. Właściwie użyję go do pomiaru wydajności nginx.

Użyjemy również GNUlot, co pomoże nam tworzyć takie wykresy z kilkoma liniami:

wyniki

Instalowanie Apache Benchmark i GNUPlot

Apache Benchmark to narzędzie, z którego możemy skorzystać po zainstalowaniu pakietu Apache, GNUPlot będzie dostępny po zainstalowaniu pakietu o tej samej nazwie. A następnie ...

W dystrybucjach takich jak Debian, Ubuntu lub podobnych:

sudo apt-get install apache2 gnuplot

W dystrybucjach, takich jak ArchLinux lub pochodne:

sudo pacman -S apache gnuplot

Wystarczy zainstalować pakiet Apache, nie musimy go uruchamiać ani niczego konfigurować, wystarczy go zainstalować.

Korzystanie z Apache Benchmark

To, co zrobimy, to wysłanie określonej liczby zapytań (100) w grupach po kilka (od 20 do 20) na konkretną stronę. Zapiszemy wynik w pliku .csv (result.csv), a następnie przetworzymy go za pomocą GNUPloit, wiersz będzie wyglądał tak:

ab -g resultados.csv -n 100 -c 20 http://nuestro-sitio-web.com/

Bardzo ważne jest umieszczenie końcowego / w adresie URL mierzonej witryny.

Oto dane wyjściowe lub dziennik, który wyświetla mi się podczas testowania witryny w mojej sieci:

To jest ApacheBench, wersja 2.3 <$ Revision: 1638069 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licencjonowane dla Apache Software Foundation, http://www.apache.org/ Benchmarking gutl.jovenclub.cu (bądź cierpliwy) ..... gotowe

Oprogramowanie serwera: Nazwa hosta serwera nginx: gutl.jovenclub.cu Port serwera: 80

Ścieżka do dokumentu: /
Długość dokumentu: 206 bajtów Poziom współbieżności: 20 Czas potrzebny na testy: 0.101 sekundy Pełne żądania: 100 Nieudane żądania: 27 (Połączenie: 0, Odbiór: 0, Długość: 27, Wyjątki: 0) Odpowiedzi inne niż 2xx: 73 Przesłano łącznie: 1310933 bajtów przesłanych HTML: 1288952 bajtów
Żądania na sekundę: 993.24 [# / s] (średnia)
Czas na żądanie: 20.136 [ms] (średnia) Czas na żądanie: 1.007 [ms] (średnia, dla wszystkich równoczesnych żądań) Szybkość przesyłania: 12715.49 [KB / s] odebrane Czasy połączenia (ms) min średnia [+/- SD] mediana max Połącz: 0 1 0.2 1 1 Przetwarzanie: 1 17 24.8 4 86 Oczekiwanie: 1 15 21.5 4 76 Razem: 1 18 24.8 5 87 Procent żądań obsłużonych w określonym czasie (ms) 50% 5 66% 6 75% 22 80% 41 90% 62 95% 80 98% 87 99% 87
100% 87 (najdłuższe żądanie)

Na czerwono zaznaczyłem to, co uważam za najważniejsze, a było mniej więcej:

  1. Dane serwera, który testujemy, a także adres URL, o którym mowa.
  2. Liczba żądań na sekundę.
  3. Ile milisekund zajęło serwerowi spełnienie żądania, które trwało najdłużej, czyli tego, na które odpowiedź zajęła najwięcej czasu.

Dzięki tym informacjom mogą zorientować się, ile czasu zajmie serwerowi obsłużenie takiej liczby żądań, mogą następnie dodać lepszy system pamięci podręcznej, dezaktywować moduły, których nie używają itp., Itd., Ponownie uruchomić test i sprawdzić, czy wydajność się poprawiła, czy nie. .

Zalecam wykonanie testu 2 lub 3 razy, aby stworzyć coś w rodzaju marginesu, ponieważ wyniki dwóch testów z rzędu rzadko są identyczne.

Inne przydatne opcje lub parametry Apache Benchmark:

-k -H 'Akceptuj-kodowanie: gzip, deflate' : Z tym ab zaakceptuje pamięć podręczną i kompresję skonfigurowaną przez serwer, więc czasy będą niższe.

-f url.txt : Więc zamiast tylko testować indeks witryny, przeprowadzi testy na adresach URL określonych w tym pliku.

W każdym razie ... spójrz na mężczyzna ab żebyś ujrzał.

Pokaż wynik na wykresie:

Umieścić ten wynik w obrazie, to znaczy w bardziej wizualnym medium, i to wiele razy jest wszystkim, co menedżerowie potrafią zrozumieć ... w tym celu wykorzystamy, jak powiedziałem wcześniej, GNUlot

W tym samym folderze, w którym mamy plik results.csv (pamiętaj, że właśnie wygenerowaliśmy powyższe polecenie) utworzymy plik o nazwie gnuplot.p:

nano plot.p

W nim umieścimy:

ustaw rozmiar png terminala 600 ustaw wyjście "results.png„ustaw tytuł”100 upraszanie, 20 jednoczesne żądania „ustaw współczynnik rozmiaru 0.6 ustaw siatkę i ustaw etykietę x”upraszanie„ustaw ylabel”czas odpowiedzi (ms)"wątek"results.csv„using 9 smooth sbezier with lines title”gutl.jovenclub.cu"

Na czerwono wskazałem, co należy zawsze sprawdzić. To znaczy od góry do dołu:

  1. Nazwa pliku obrazu do wygenerowania
  2. Liczba wszystkich i jednoczesnych żądań.
  3. Nazwa pliku, który właśnie wygenerowaliśmy.
  4. Domena, nad którą pracujemy.

Po umieszczeniu tego zapisz i wyjdź (Ctrl + O a następnie Ctrl + X) wykonamy następujące czynności:

gnuplot plot.p

I voila, to wygeneruje wykres o żądanej nazwie, mój to:

wyniki 2

Koniec!

Apache Benchmark ma znacznie więcej opcji, istnieje również wiele kombinacji, których możemy użyć, aby nasz test wydajności był jeszcze bardziej kompletny.

Ale hej, to były podstawy 😉

Enjoy!


9 komentarzy, zostaw swoje

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   Francisco powiedział

    Ciekawy benchmark Apache, czego gnuplot nie wiedział, czy można modyfikować styl wyjścia? Mówię co do formalnego sprawozdania.

    Pozdrowienia z Chile.

    1.    KZKG ^ Gaara powiedział

      Tak, w sieci jest wiele konfiguracji dla gnuplot, poszukaj w Google, aby sprawdzić, czy znajdziesz jakąś poważną lub profesjonalną na tyle, abyś mógł z niej korzystać, bo taki jest gust każdego 🙂

  2.   Wolf119 powiedział

    Ummm mam zamiar przetestować to teraz na wirtualnym serwerze Apache, który mam uruchomiony, aby zobaczyć, jak to działa, w odniesieniu do GUTL, ponieważ uruchamia się bardzo szybko z 80 żądań, prawda? Zobaczmy, że 100 ms nie To nic, ale moją uwagę przykuwa wysoka, która daje o 10 więcej żądań w porównaniu z 70 do 80 z 80 do 90

    1.    KZKG ^ Gaara powiedział

      Musi to wynikać z kolejki lub maksymalnej liczby wątków, które mają być obsługiwane jednocześnie. Zrobiłem jednak test bez gzip, bez deflate, bez cache czy czegokolwiek 😉

  3.   Charlie Brown powiedział

    Bardzo interesujące, szczególnie w przypadku korzystania z GNUPlot. Z tego, co widzę, można go użyć do wygenerowania wykresów z prawie dowolnego zestawu danych, prawda? ...

    1.    KZKG ^ Gaara powiedział

      Tak, oczywiście, przekazujesz dane w pliku oddzielone przecinkami lub coś w tym rodzaju, mówisz mu, jak to przetworzyć w pliku konfiguracyjnym i to wszystko

  4.   Adolfo powiedział

    Witam, zawsze spędzam czas na czytaniu tego bloga, ale nigdy nie komentowałem żadnego artykułu, a to wydaje się dobra okazja.
    Chcę się z wami podzielić, że ten typ wykresu może zostać źle zinterpretowany, ponieważ Apache Bench sortuje wynik przy użyciu ttime (czas całkowity) zamiast czasu sekwencyjnego. Chociaż dane są nadal prawdziwe, wykres prawdopodobnie nie pokazuje, czego chcemy.
    Oto link, w którym to przeczytałem.
    http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/

    Pozdrowienia.

  5.   Hugo powiedział

    Apache Benchmark nie jest najlepszym narzędziem do pomiaru wydajności serwerów HTTP w komputerach z wieloma rdzeniami, ponadto tylko 100 żądań przy 20 jednoczesnych połączeniach to bardzo słaby test, coś bardziej realistycznego byłoby 1,000 lub 10,000 żądań przy 100 jednoczesnych połączeniach (wiadomo że Nginx jest jedną z aplikacji zdolnych do obsługi więcej niż 10,000 żądań na sekundę) i do tego lepiej jest użyć narzędzia takiego jak weighttp, które jest zaprojektowane dla komputerów wielordzeniowych i używa epoll, który jest szybszy, w przeciwieństwie do Apache Bench, który używa pojedynczego wątku i mniej wydajnego mechanizmu obsługi zdarzeń.

    Podsumowując, zakładając, że serwer ma tylko 4 rdzenie:

    weighttp -n 10000 -c 100 -t 4 -k „http://our-website.com/”

  6.   wiara powiedział

    Witam wszystkich,
    Podczas rysowania wykresu (z CSV) za pomocą gnuplot daje mi następujący błąd, czy możesz mi powiedzieć, jak go rozwiązać?

    „Plot.p”, wiersz 8: ostrzeżenie: pomijanie pliku danych bez ważnych punktów

    wykreśl «graph.csv», używając 9 gładkich sbezierów z tytułem linii «AB - localhost / web»
    ^
    „Plot.p”, wiersz 8: zakres x jest nieprawidłowy

    Czy za pomocą gnuplot mogę również generować strony HTML?