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ń.
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:
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
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/
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:
- Dane serwera, który testujemy, a także adres URL, o którym mowa.
- Liczba żądań na sekundę.
- 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. .
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:
- Nazwa pliku obrazu do wygenerowania
- Liczba wszystkich i jednoczesnych żądań.
- Nazwa pliku, który właśnie wygenerowaliśmy.
- 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:
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!
Ciekawy benchmark Apache, czego gnuplot nie wiedział, czy można modyfikować styl wyjścia? Mówię co do formalnego sprawozdania.
Pozdrowienia z Chile.
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 🙂
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
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 😉
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? ...
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
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.
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/”
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?