Тестування навантаження на сайт
Коли веб-додаток (сайт, сервіс) ще досить молоде, але націлене на широку аудиторію, то вельми складно зрозуміти наскільки потужне серверне обладнання потрібно. Так що кращим рішенням буде симуляція потоку користувачів за допомогою синтетичних тестів.
Apache Bench
Напевно, один з найпростіших у використанні і популярних тестів для перевірки навантаження на сайт. Утиліта підходить як для простого, так і просунутого тестування:
# Перевірка максимальної кількості запитів з TLS
Команда виконала 10 000 запитів в 50 потоків і, крім усього іншого, показала швидкість і оброблене кількість запитів:
# Лог тесту видає набагато більше інформації
З цього звіту найважливішими даними будуть:- Requests per second - кількість запитів в секунду. Наприклад якщо сторінка складається з 20 частин (CSS, картинки і HTML), то в нашому прикладі сервер здатний обробити близько 40 одночасних користувачів в секунду.
- Time per request (mean) - середній час на виконання групи паралельних запитів (в нашому випадку 50);
- Time per request (mean, across all concurrent requests) - середній час на виконання одного запиту.
AB знадобиться для швидкої і грубої оцінки продуктивності веб-сервера, так що якщо потрібно отримати більш наближені до реальності дані, доведеться скористатися додатковими утилітами.
Цей тест з відкритим вихідним кодом був розроблений в HP для вимірювання продуктивності веб-сервера. Інструмент не оновлювався кілька років, але все ще є досить актуальним.
Утиліта, як і ab, проста у використанні і має досить широким функціоналом. Запускається вона так само просто, як і ab:
# Створення 100 000 сесій (по 5 викликів через кожні 2 с) зі швидкістю 1000
А лог буде виглядати так:
# Крім усього іншого, продуктивність показує величина швидкості запитів (Request rate)
У цьому звіті варто сфокусуватися на:- Connection rate - реальна швидкість створення нових з'єднань. Вона показує здатність сервера обробляти з'єднання, тобто в нашому випадку до 1055 соед. / С, але не більше 1022 одночасних з'єднань.
- Connection time [ms] - час "життя" успішних з'єднань між ініціалізацією і закриттям. Знову ж показує продуктивність сервера при обробці великої кількості з'єднань.
- Request rate - швидкість обробки запитів. Тобто, кількість запитів, які сервер здатний виконувати за секунду, показує чуйність веб-додатки.
Але для більш глибокої перевірки і істотного навантаження доведеться використовувати ще більш просунуті інструменти.
Це потужна, просунута, мультизадачная і мультіпоточная утиліта. Інструмент може використовуватися для навантаження серверів HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP і Jabber / XMPP. Підтримується SSL, моніторинг ресурсів системи і агенти SNMP, Munin або Erlang на віддалених серверах, симуляція поведінки користувачів і розширені звіти.
Інструмент написаний на Erlang, так що для початку необхідно встановити потрібні репозиторії, а потім завантажити та встановити Tsung:
# Розпакування і компіляція утиліти
Всі настройки інструменту необхідно прописати в його файлі конфігурації:
Після чого його потрібно відредагувати, задавши необхідні параметри:
# Можна вказувати додаткові опції (наприклад браузери користувачів), безлічі нодов для симуляції користувачів
Тепер можна запускати tsung:
# Для запуску з безлічі нодов їх потрібно попередньо вказати в налаштуваннях
# Надається перевага браузер
Звіт буде складатися з графіків і важливою додатковою інформацією. У ньому варто звернути увагу на:- Session - загальна кількість користувачів і кількість одночасних сесій в секунду, які веб-сервер обробив.
- Request - час відгуку веб-сервера, його здатність і швидкість обробки одночасних запитів. Наприклад 200 запитів / с значить, що в середньому 10 користувачів зможе одночасно отримати зайти на веб-сторінку, що складається в загальному з 20 компонентів (CSS, картинки і HTML). А це понад 400 000 відвідувачів за 12 годин.
- Connect - час, необхідний на підключення, тобто чуйність веб-сервера.
Додаткові графіки дозволять оцінити навантаження на веб-сервер за весь час тестування, відстежити виникли помилки і динаміку.
інші утиліти
Звичайно ж список інструментів для перевірки продуктивності веб-сервера і тестування навантаження на сайт не обмежується наведеним в цьому матеріалі. Таких утиліт сила-силенна, як платних, так і безкоштовних. Існують сайти для генерації навантаження, типу LoadImpact, утиліти для запуску з командного рядка і повноцінні програми з GUI. Однією з найпопулярніших з призначеним для користувача інтерфейсом, до речі, є Apache JMeter - потужна, просунута і досить складна.
Найголовніше
Apache Bench, Httperf і Tsung відмінно підходять для тестування навантаження на великі і маленькі сайти. Але тільки tsung зможе вичавити всі соки з веб-сервера і показати на що він здатний в умовах, наближених до реальності. Не забувайте, що спочатку всі тести потрібно провести для одного користувача, щоб простежити залежність і мати точку відліку.
