Apache Benchmark + GNUPlot: вимірювання та графік продуктивності вашого веб-сервера

Не має значення, чи використовується воно Nginx, Apache, Lighttpd чи інший, будь-який адміністратор мережі, який має веб-сервер, захоче в якийсь момент дізнатися, як швидко веб-сервер відповідає на задану кількість запитів.

Managed-Services-Server-Management-e1368625038693

Тест Apache + GNUPlot

Цього разу ми будемо використовувати інструмент, який називається Тест Apache, який хоч і має в назві „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

Ми будемо надсилати певну кількість запитів (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 $> Авторське право 1996 Адам Твісс, Zeus Technology Ltd, http://www.zeustech.net/ Ліцензовано Фонду програмного забезпечення Apache, 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 [# / сек] (в середньому)
Час на запит: 20.136 [мс] (середній) Час на запит: 1.007 [мс] (середній для всіх одночасних запитів) Швидкість передачі: 12715.49 [Кбайт / сек] отримані Часи підключення (мс), мін. Середнє [+/- 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 Відсоток запитів, поданих протягом певного часу (мс) 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:

-k -H 'Accept-Encoding: gzip, deflate' : При цьому ab прийме кеш і стиснення, які настроїв сервер, тому час буде меншим.

-f urls.txt : Отже, замість того, щоб просто тестувати індекс сайту, він буде проводити тести URL-адрес, які ми вказуємо у цьому файлі.

У всякому разі ... погляньте на людина ab щоб ти бачив.

Покажіть результат на графіку:

Щоб помістити цей результат в зображення, тобто в більш наочне середовище, і це багато разів, це все, що менеджерам вдається зрозуміти ... для цього ми використаємо, як я вже говорив раніше, GNUplot

У тій же папці, де ми маємо файл results.csv (пам’ятайте, ми щойно згенерували за допомогою наведеної команди) ми збираємося створити файл з назвою gnuplot.p:

nano plot.p

У ньому ми помістимо наступне:

встановити термінал png розмір 600 встановити вихід "результати.png"встановити заголовок"100 запити, 20 одночасні запити "встановити співвідношення розміру 0.6 встановити сітку та встановити xlabel"запитів"встановити ylabel"час відгуку (мс)"сюжет"результати.csv"використання 9 гладких sbezier із заголовком рядків"gutl.jovenclub.cu"

Я позначив червоним, що слід завжди перевіряти. Тобто і зверху вниз:

  1. Назва файлу зображення, який потрібно створити
  2. Кількість загальних та одночасних запитів.
  3. Назва файлу, який ми щойно створили.
  4. Домен, над яким ми працюємо.

Як тільки ми помістимо це, збережіть і вийдіть (Ctrl + O а потім Ctrl + X), ми виконаємо наступне:

gnuplot plot.p

І вуаля, яка генеруватиме графік із потрібною назвою, моя:

результати2

Кінець!

Apache Benchmark має набагато більше можливостей, є також безліч комбінацій, які ми можемо використовувати, щоб зробити наш тест ефективності ще більш повним.

Але привіт, це було основним 😉

Насолоджуйтесь!


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

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

  1.   Франциско - сказав він

    Цікавий орієнтир apache, чого не знав gnuplot, чи можна змінити стиль виводу? Я кажу, що стосується офіційного звіту.

    Привіт з Чилі.

    1.    KZKG ^ Гаара - сказав він

      Так, у мережі є безліч конфігурацій для gnuplot, пошукайте в Google, щоб побачити, чи знайдете ви достатньо серйозних чи професійних для того, щоб ним скористатися, адже це смак кожного смаку

  2.   Wolf119 - сказав він

    Мммм, я зараз його перевіряю на віртуальному сервері apache, який у мене запущений, щоб побачити, як це відбувається щодо GUTL, оскільки він запускається дуже швидко з 80 запитів, так? Давайте подивимось, що 100 мс це не так. нічого, але найвищий показник, який дає ще 10 запитів, порівняно з 70 на 80 з 80 на 90 привертає мою увагу

    1.    KZKG ^ Гаара - сказав він

      Це повинно бути обумовлено чергою або кількістю максимальної кількості потоків, які слід відвідувати одночасно. Однак я провів тест без gzip, без дефляції, без кешу чи чогось іншого 😉

  3.   Чарлі Браун - сказав він

    Дуже цікаво, особливо для використання GNUPlot. З того, що я бачу, його можна використовувати для створення графіків майже з будь-якого набору даних, так? ...

    1.    KZKG ^ Гаара - сказав він

      Так, звичайно, ви передаєте дані у файл, відокремлений комами або чимось подібним, ви розповідаєте, як це обробити у файлі конфігурації, і все.

  4.   Адольфо - сказав він

    Привіт, я завжди витрачаю це на читання цього блогу, але ніколи не коментував жодної статті, і це видається гарною можливістю.
    Я хочу поділитися з вами тим, що цей тип графіків може бути витлумачений неправильно, оскільки 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 одночасними з'єднаннями ( відомо, що Nginx - одна з програм, здатна обслуговувати більше 10,000 запитів в секунду), і для цього краще використовувати такий інструмент, як 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 плавних зразків із заголовком рядків «AB - localhost / web»
    ^
    "Plot.p", рядок 8: діапазон x недійсний

    Чи можу я за допомогою gnuplot також створювати HTML-сторінки?