Няма значение дали се използва Nginx, Apache, Lighttpd или по друг начин, всеки мрежов администратор, който има уеб сървър, в даден момент ще иска да знае колко бързо уеб сървърът отговаря на даден брой заявки.
Apache Benchmark + GNUplot
Този път ще използваме инструмент, наречен Apache Benchmark, който макар да има „apache“ в името си, НЕ е само за измерване на производителността на Apache, но може да се използва и за Nginx и други. Всъщност ще го използвам за измерване на ефективността на Nginx.
Ние също ще използваме GNUplot, което ще ни помогне да направим графики като тези с няколко реда:
Инсталиране на Apache Benchmark и GNUPlot
Apache Benchmark е инструмент, който можем да използваме след инсталиране на пакета Apache, GNUPlot ще бъде достъпен след инсталиране на пакета със същото име. Така че след това ...
На дистрибуции като Debian, Ubuntu или подобни:
sudo apt-get install apache2 gnuplot
В дистрибуции като ArchLinux или производни:
sudo pacman -S apache gnuplot
Използване на Apache Benchmark
Това, което ще направим, е да изпратим определен брой заявки (100) в групи от по няколко (от 20 до 20) до определен сайт. Ще запишем резултата в .csv файл (result.csv) и след това ще го обработим с GNUPloit, редът ще бъде:
ab -g resultados.csv -n 100 -c 20 http://nuestro-sitio-web.com/
Това е изходът или дневникът, който ми показва, когато тествам сайт в мрежата си:
Това е ApacheBench, версия 2.3 <$ Ревизия: 1638069 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Лицензирано от Apache Software Foundation, http://www.apache.org/ Бенчмаркинг gutl.jovenclub.cu (бъдете търпеливи) ..... готово Сървърен софтуер: nginx Име на хост на сървъра: gutl.jovenclub.cu Порт на сървъра: 80 Път на документа: / Дължина на документа: 206 байта Ниво на паралелност: 20 Време, необходимо за тестове: 0.101 секунди Изпълнени заявки: 100 Неуспешни заявки: 27 (Свързване: 0, Получаване: 0, Дължина: 27, Изключения: 0) Не-2xx отговори: 73 Общо прехвърлени: 1310933 байта Прехвърлен HTML: 1288952 байта Заявки в секунда: 993.24 [# / sec] (средно) Време за заявка: 20.136 [ms] (средно) Време за заявка: 1.007 [ms] (средно за всички едновременни заявки) Скорост на трансфер: 12715.49 [Kbytes / sec] получени времена за връзка (ms) мин. Средно [+/- sd] медиана макс. Свързване: 0 1 0.2 1 1 Обработка: 1 17 24.8 4 86 Чакане: 1 15 21.5 4 76 Общо: 1 18 24.8 5 87 Процент на заявките, обслужвани в рамките на определено време (ms) 50% 5 66% 6 75% 22 80% 41 90% 62 95% 80 98% 87 99% 87 100% 87 (най-дълго искане)
С червено съм отбелязал това, което считам за най-важното, което е горе-долу:
- Данни на сървъра, който тестваме, както и въпросният URL адрес.
- Брой заявки в секунда.
- Колко милисекунди отне на сървъра, за да отговори на заявката, която отне най-много време, т.е. тази, на която най-дълго се отговори.
С тази информация те могат да имат представа колко време ще отнеме на сървъра да присъства на това количество заявки, след това могат да добавят по-добра кеш система, да деактивират модули, които не използват и т.н. вижте дали производителността се е подобрила или не.
Други полезни опции или параметри на Apache Benchmark:
-k -H 'Приемане-кодиране: gzip, дефлация' : С това ab ще приеме кеша и компресията, които сървърът е конфигурирал, така че времето ще бъде по-малко.
-f urls.txt : Така че вместо просто да тества индекса на сайта, той ще извършва тестове на URL адресите, които ние посочваме в този файл.
Както и да е ... погледнете мъж аб за да видите.
Покажете резултата в графика:
За да поставим този изход в изображение, тоест в по-визуална среда и то много пъти, всичко е, което мениджърите успяват да разберат ... за това ще използваме, както казах преди GNUplot
В същата папка, където имаме файла results.csv (не забравяйте, че току-що генерирахме с горната команда) ще създадем файл, наречен gnuplot.p:
nano plot.p
В него ще поставим следното:
задайте терминал png размер 600 задайте изход "резултати.png„задаване на заглавие“100 искания, 20 едновременни заявки "задаване на съотношение размер 0.6 задаване на мрежа и задаване на xlabel"искания"задайте ylabel"време за реакция (ms)"сюжет"резултати.csv"използване на 9 гладки sbezier със заглавие на редове"gutl.jovenclub.cu"
С червено съм отбелязал това, което винаги трябва да проверявате. Това е и отгоре надолу:
- Име на файла с изображение, който ще бъде генериран
- Брой на общите и едновременните заявки.
- Име на файла, който току-що генерирахме.
- Домейн, върху който работим.
След като сложим това, запишете и излезте (Ctrl + O и след това Ctrl + X), ще изпълним следното:
gnuplot plot.p
И voila, която ще генерира графиката с желаното име, моята е:
Apache Benchmark има много повече опции, има и много комбинации, които можем да използваме, за да направим нашия тест за производителност още по-пълен.
Хей, това са основите 😉
Да ви е сладко!
Интересен бенчмарк на apache, не знаех за gnuplot, възможно ли е да модифицирам стила на изхода? Казвам като за официален доклад.
Поздрави от Чили.
Да, в мрежата има много конфигурации за gnuplot, потърсете от Google, за да видите дали ще намерите достатъчно сериозен или професионален, за да го използвате, защото това е вкусът на всеки 🙂
Ами сега ще го тествам на виртуален сървър на Apache, който съм пуснал, за да видя как протича това по отношение на GUTL, тъй като се задейства много бързо от 80 заявки, нали? Да видим, че 100 ms не са. нищо, но високото, което дава за още 10 заявки в сравнение със 70 до 80 с 80 до 90, привлича вниманието ми
Трябва да се дължи на опашката или на максималния брой нишки, които да бъдат посещавани едновременно. Направих теста обаче без gzip, без дефлация, без кеш или нещо друго 😉
Много интересно, особено за използването на GNUPlot. От това, което виждам, може да се използва за генериране на графики от почти всеки набор от данни, нали? ...
Да, разбира се, предавате данните във файл, разделен със запетаи или нещо подобно, казвате му как да го обработва в конфигурационния файл и това е всичко
Здравейте, винаги прекарвам време в четене на този блог, но никога не съм коментирал нито една статия и това изглежда като добра възможност.
Това, което искам да споделя с вас, е, че този тип графика може да бъде интерпретирана погрешно, тъй като Apache Bench сортира резултата, използвайки ttime (общо време) вместо последователно време. Въпреки че данните все още са верни, графиката вероятно не показва какво искаме.
Ето линка, където го прочетох.
http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/
Поздрави.
Apache Benchmark не е най-добрият инструмент за измерване на производителността на HTTP сървъри в компютри с множество ядра, освен това само 100 заявки с 20 едновременни връзки са много слаб тест, нещо по-реалистично би било 1,000 или 10,000 100 заявки със 10,000 едновременни връзки ( известно е, че Nginx е едно от приложенията, което може да обслужва над XNUMX XNUMX заявки в секунда) и за това е по-добре да използвате инструмент като weighttp, който е предназначен за многоядрени компютри и използва epoll, който е по-бърз, за разлика от Apache Пейка, която използва една нишка и по-малко ефективен механизъм за обработка на събития.
За да се приземя, ако приемем, че сървърът има само 4 ядра:
weighttp -n 10000 -c 100 -t 4 -k "http://our-web-site.com/"
Здравейте всички,
Когато изчертавате графиката (от CSV) с gnuplot, това ми дава следната грешка, можете ли да ми кажете как да я реша?
"Plot.p", ред 8: предупреждение: Пропуска се файл с данни без валидни точки
графика «graph.csv» с помощта на 9 гладки sbezier със заглавие на редове «AB - localhost / web»
^
"Plot.p", ред 8: х диапазонът е невалиден
С gnuplot мога ли да генерирам и HTML страници?