Не має значення, чи використовується воно Nginx, Apache, Lighttpd чи інший, будь-який адміністратор мережі, який має веб-сервер, захоче в якийсь момент дізнатися, як швидко веб-сервер відповідає на задану кількість запитів.
Тест 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
Ми будемо надсилати певну кількість запитів (100) групами по кілька (від 20 до 20) на певний сайт. Результат ми збережемо у файлі .csv (result.csv), а потім обробимо його за допомогою GNUPloit, рядок буде таким:
ab -g resultados.csv -n 100 -c 20 http://nuestro-sitio-web.com/
Це вихідні дані або журнал, які відображаються під час тестування сайту в моїй мережі:
Це 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 (найдовший запит)
Я позначив червоним, що я вважаю найважливішим, що було більш-менш:
- Дані сервера, який ми тестуємо, а також відповідна URL-адреса.
- Кількість запитів в секунду.
- Скільки мілісекунд знадобилося серверу, щоб виконати запит, який зайняв найдовше, тобто той, на який відповіли найдовше.
Завдяки цій інформації вони можуть мати уявлення про те, скільки часу знадобиться серверу для участі в такій кількості запитів, потім вони можуть додати кращу систему кешування, деактивувати модулі, якими вони не користуються, тощо, тощо, повторити тест і подивіться, покращилась продуктивність чи ні.
Інші корисні параметри або параметри тесту 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"
Я позначив червоним, що слід завжди перевіряти. Тобто і зверху вниз:
- Назва файлу зображення, який потрібно створити
- Кількість загальних та одночасних запитів.
- Назва файлу, який ми щойно створили.
- Домен, над яким ми працюємо.
Як тільки ми помістимо це, збережіть і вийдіть (Ctrl + O а потім Ctrl + X), ми виконаємо наступне:
gnuplot plot.p
І вуаля, яка генеруватиме графік із потрібною назвою, моя:
Apache Benchmark має набагато більше можливостей, є також безліч комбінацій, які ми можемо використовувати, щоб зробити наш тест ефективності ще більш повним.
Але привіт, це було основним 😉
Насолоджуйтесь!
Цікавий орієнтир apache, чого не знав gnuplot, чи можна змінити стиль виводу? Я кажу, що стосується офіційного звіту.
Привіт з Чилі.
Так, у мережі є безліч конфігурацій для gnuplot, пошукайте в Google, щоб побачити, чи знайдете ви достатньо серйозних чи професійних для того, щоб ним скористатися, адже це смак кожного смаку
Мммм, я зараз його перевіряю на віртуальному сервері apache, який у мене запущений, щоб побачити, як це відбувається щодо GUTL, оскільки він запускається дуже швидко з 80 запитів, так? Давайте подивимось, що 100 мс це не так. нічого, але найвищий показник, який дає ще 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 одночасними з'єднаннями ( відомо, що Nginx - одна з програм, здатна обслуговувати більше 10,000 запитів в секунду), і для цього краще використовувати такий інструмент, як 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 плавних зразків із заголовком рядків «AB - localhost / web»
^
"Plot.p", рядок 8: діапазон x недійсний
Чи можу я за допомогою gnuplot також створювати HTML-сторінки?