Apache Benchmark + GNUPlot: Измерване и графично представяне на ефективността на вашия уеб сървър

Няма значение дали се използва Nginx, Apache, Lighttpd или по друг начин, всеки мрежов администратор, който има уеб сървър, в даден момент ще иска да знае колко бързо уеб сървърът отговаря на даден брой заявки.

Управлявани-Услуги-Управление-Сървър-e1368625038693

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, не е нужно да го стартираме или да конфигурираме нещо друго, достатъчно е само да го инсталираме.

Използване на Apache Benchmark

Това, което ще направим, е да изпратим определен брой заявки (100) в групи от по няколко (от 20 до 20) до определен сайт. Ще запишем резултата в .csv файл (result.csv) и след това ще го обработим с GNUPloit, редът ще бъде:

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

Много е важно да поставите крайния / в URL адреса на сайта, който ще се измерва.

Това е изходът или дневникът, който ми показва, когато тествам сайт в мрежата си:

Това е 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 (най-дълго искане)

С червено съм отбелязал това, което считам за най-важното, което е горе-долу:

  1. Данни на сървъра, който тестваме, както и въпросният URL адрес.
  2. Брой заявки в секунда.
  3. Колко милисекунди отне на сървъра, за да отговори на заявката, която отне най-много време, т.е. тази, на която най-дълго се отговори.

С тази информация те могат да имат представа колко време ще отнеме на сървъра да присъства на това количество заявки, след това могат да добавят по-добра кеш система, да деактивират модули, които не използват и т.н. вижте дали производителността се е подобрила или не.

Препоръчвам да проведете теста 2 или 3 пъти, така че да създадете нещо като поле, тъй като резултатите от два теста подред рядко са идентични.

Други полезни опции или параметри на 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"

С червено съм отбелязал това, което винаги трябва да проверявате. Това е и отгоре надолу:

  1. Име на файла с изображение, който ще бъде генериран
  2. Брой на общите и едновременните заявки.
  3. Име на файла, който току-що генерирахме.
  4. Домейн, върху който работим.

След като сложим това, запишете и излезте (Ctrl + O и след това Ctrl + X), ще изпълним следното:

gnuplot plot.p

И voila, която ще генерира графиката с желаното име, моята е:

резултати2

Край!

Apache Benchmark има много повече опции, има и много комбинации, които можем да използваме, за да направим нашия тест за производителност още по-пълен.

Хей, това са основите 😉

Да ви е сладко!


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.

  1.   Франциско каза той

    Интересен бенчмарк на apache, не знаех за gnuplot, възможно ли е да модифицирам стила на изхода? Казвам като за официален доклад.

    Поздрави от Чили.

    1.    KZKG ^ Гаара каза той

      Да, в мрежата има много конфигурации за gnuplot, потърсете от Google, за да видите дали ще намерите достатъчно сериозен или професионален, за да го използвате, защото това е вкусът на всеки 🙂

  2.   Wolf119 каза той

    Ами сега ще го тествам на виртуален сървър на Apache, който съм пуснал, за да видя как протича това по отношение на GUTL, тъй като се задейства много бързо от 80 заявки, нали? Да видим, че 100 ms не са. нищо, но високото, което дава за още 10 заявки в сравнение със 70 до 80 с 80 до 90, привлича вниманието ми

    1.    KZKG ^ Гаара каза той

      Трябва да се дължи на опашката или на максималния брой нишки, които да бъдат посещавани едновременно. Направих теста обаче без gzip, без дефлация, без кеш или нещо друго 😉

  3.   Чарли-Браун каза той

    Много интересно, особено за използването на GNUPlot. От това, което виждам, може да се използва за генериране на графики от почти всеки набор от данни, нали? ...

    1.    KZKG ^ Гаара каза той

      Да, разбира се, предавате данните във файл, разделен със запетаи или нещо подобно, казвате му как да го обработва в конфигурационния файл и това е всичко

  4.   Adolfo каза той

    Здравейте, винаги прекарвам време в четене на този блог, но никога не съм коментирал нито една статия и това изглежда като добра възможност.
    Това, което искам да споделя с вас, е, че този тип графика може да бъде интерпретирана погрешно, тъй като Apache Bench сортира резултата, използвайки ttime (общо време) вместо последователно време. Въпреки че данните все още са верни, графиката вероятно не показва какво искаме.
    Ето линка, където го прочетох.
    http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/

    Поздрави.

  5.   Уго каза той

    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/"

  6.   вяра каза той

    Здравейте всички,
    Когато изчертавате графиката (от CSV) с gnuplot, това ми дава следната грешка, можете ли да ми кажете как да я реша?

    "Plot.p", ред 8: предупреждение: Пропуска се файл с данни без валидни точки

    графика «graph.csv» с помощта на 9 гладки sbezier със заглавие на редове «AB - localhost / web»
    ^
    "Plot.p", ред 8: х диапазонът е невалиден

    С gnuplot мога ли да генерирам и HTML страници?