Как выполнить тест производительности веб-сервера?

Знаете ли вы среднее время ответа вашего сайта? Знаете ли вы, сколько одновременных пользователей может обрабатывать ваш сайт??


Нагрузочное тестирование важно для веб-приложений, чтобы знать веб-сайт вместимость. Если вы хотите выбрать веб-сервер, то первое, что вы хотите сделать, это выполнить нагрузочное тестирование и посмотреть, какой из них вам подходит..

Бенчмаркинг может помочь вам принять решение;

  • Какой веб-сервер работает лучше
  • Количество серверов, которые вам нужно обслужить х количество запросов
  • Какая конфигурация дает вам лучшие результаты

Есть несколько онлайн-инструментов для проведения стресс-теста; однако, если вы ищете собственное решение или хотите оценить производительность только веб-сервера, вы можете использовать ApacheBench и в качестве альтернативы некоторые из перечисленных ниже инструментов.

Я использовал Apache & Веб-сервер Nginx, размещенный на DigitalOcean проверить это.

ApacheBench

ApacheBench (ab) – это программа командной строки с открытым исходным кодом, которая работает с любым веб-сервером. В этом посте я объясню, как установить эту небольшую программу и выполнить нагрузочное тестирование для сравнения результатов..

апаш

Давайте установим ApacheBench с помощью команды yum.

ням установить httpd-tools

Если у вас уже есть httpd-tools, вы можете игнорировать это.

Теперь давайте посмотрим, как он выполняет 5000 запросов с параллелизмом 500.

[[Электронная почта защищена] ~] # ab -n 5000 -c 500 http: // localhost: 80 /
Это ApacheBench, версия 2.3 <Редакция $ 655654 $>
Авторские права 1996 Адам Твисс, Zeus Technology Ltd, http://www.zeustech.net/
Лицензировано для Apache Software Foundation, http://www.apache.org/
Бенчмаркинг localhost (наберитесь терпения)
Выполнено 500 запросов
Выполнено 1000 запросов
Выполнено 1500 запросов
Выполнено 2000 запросов
Выполнено 2500 запросов
Выполнено 3000 запросов
Выполнено 3500 запросов
Выполнено 4000 запросов
Выполнено 4500 запросов
Выполнено 5000 запросов
Выполнено 5000 запросов
Серверное программное обеспечение: Apache / 2.2.15
Имя хоста сервера: localhost
Порт сервера: 80
Путь к документу: /
Длина документа: 4961 байт
Уровень параллелизма: 500
Время, затраченное на тесты: 13,389 секунды
Выполнено запросов: 5000
Сбой запросов: 0
Ошибки записи: 0
Non-2xx ответов: 5058
Всего передано: 26094222 байта
HTML переведено: 25092738 байт
Запросов в секунду: 373,45 [# / сек] (среднее значение)
Время на запрос: 1338,866 [мс] (среднее)
Время на запрос: 2,687 [мс] (среднее значение для всех одновременных запросов)
Скорость передачи: 1903,30 [Кбайт / с] получено
Время соединения (мс)
мин среднее [+/- сд] медиана макс
Коннект: 0 42 20,8 41 1000
Обработка: 0 428 2116,5 65 13310
Ожидание: 0 416 2117,7 55 13303
Итого: 51 470 2121,0 102 13378
Процент запросов, обработанных в течение определенного времени (мс)
50% 102
66% 117
75% 130
80% 132
90% 149
95% 255
98% 13377
99% 13378
100% 13378 (самый длинный запрос)
[[Электронная почта защищена] ~] #

Итак, как вы можете видеть, Apache обработал 373 запроса в секунду, и общее количество запросов заняло 13,389 секунды..

Теперь вы знаете, что конфигурация по умолчанию может обслуживать эти многочисленные запросы, поэтому, когда вы вносите какие-либо изменения в конфигурацию, вы можете снова выполнить тест, чтобы сравнить результаты и выбрать Лучший один.

Nginx

Давайте проверим то, что мы сделали для Apache, чтобы вы могли сравнить, какой из них работает лучше.

[[Электронная почта защищена] ~] # ab -n 5000 -c 500 http: // localhost: 80 /
Это ApacheBench, версия 2.3 <Редакция $ 655654 $>
Авторские права 1996 Адам Твисс, Zeus Technology Ltd, http://www.zeustech.net/
Лицензировано для Apache Software Foundation, http://www.apache.org/
Бенчмаркинг localhost (наберитесь терпения)
Выполнено 500 запросов
Выполнено 1000 запросов
Выполнено 1500 запросов
Выполнено 2000 запросов
Выполнено 2500 запросов
Выполнено 3000 запросов
Выполнено 3500 запросов
Выполнено 4000 запросов
Выполнено 4500 запросов
Выполнено 5000 запросов
Выполнено 5000 запросов
Серверное программное обеспечение: nginx / 1.10.1
Имя хоста сервера: localhost
Порт сервера: 80
Путь к документу: /
Длина документа: 3698 байт
Уровень параллелизма: 500
Время, затраченное на тесты: 0,758 секунды
Выполнено запросов: 5000
Сбой запросов: 0
Ошибки записи: 0
Всего передано: 19660000 байт
HTML переведено: 18490000 байт
Запросов в секунду: 6593,48 [# / сек] (среднее значение)
Время на запрос: 75,832 [мс] (среднее)
Время на запрос: 0,152 [мс] (среднее значение для всех одновременных запросов)
Скорость передачи: 25317,93 [Кбайт / с] получено
Время соединения (мс)
мин среднее [+/- сд] медиана макс
Connect: 0 6 11,0 2 53
Обработка: 5 19 8,2 17 53
Ожидание: 0 18 8,2 16 47
Итого: 10 25 17,4 18 79
Процент запросов, обработанных в течение определенного времени (мс)
50% 18
66% 21
75% 21
80% 22
90% 69
95% 73
98% 75
99% 76
00% 79 (самый длинный запрос)
[[Электронная почта защищена] ~] #

ВОТ ЭТО ДА! Ты это видел? Nginx обработан 6593 запросов в секунду! Победитель.

Таким образом, сравнивая два веб-сервера, вы получите представление о том, какой из них выбрать для вашего веб-приложения..

Выше тест на CentOS 6,8, 64 бит. Вы можете попробовать несколько комбинаций ОС & Версия веб-сервера для оптимальных результатов.

Осада

Осада утилита тестирования нагрузки HTTP, поддерживаемая в UNIX Вы можете поместить несколько URL-адресов в текстовый файл, чтобы загрузить тест. Вы можете установить осаду, используя Yum.

# yum install siege

Давайте запустим тест с 500 одновременными запросами в течение 5 секунд.

[[Электронная почта защищена] ~] # siege -q -t 5S -c 500 http: // localhost /
Снятие осады сервера … сделано.
Сделки: 4323 просмотров
Наличие: 100,00%
Истекшее время: 4,60 с
Переданные данные: 15,25 МБ.
Время отклика: 0,04 с
Скорость транзакции: 939,78 транс / сек
Пропускная способность: 3,31 МБ / с
Параллелизм: 37,97
Успешных транзакций: 4323
Неудачные транзакции: 0
Самая длинная транзакция: 1.04
Кратчайшая сделка: 0,00
[[Электронная почта защищена] ~] #

Разбить параметры.

-q – запустить его тихо (не показывая детали запроса)

-t – запустить в течение 5 секунд

-c – 500 одновременных запросов

Итак, как видно, доступность составляет 100%, а время отклика – 0,04 секунды. Вы можете настроить параметры нагрузочного теста в зависимости от вашей цели.

Gobench

Gobench написан на языке Go и представляет собой простую утилиту для нагрузочного тестирования для оценки производительности веб-сервера. Он поддерживает более 20 000 одновременно работающих пользователей, которых ApacheBench не делает.

Apache JMeter

JMeter является одним из самых популярных инструментов с открытым исходным кодом для измерения производительности веб-приложений. JMeter – это Java-приложение, а не только веб-сервер, но вы можете использовать его против PHP, Java. ASP.net, SOAP, REST и т. Д..

JMeter получил приличный дружественный графический интерфейс, а последняя версия 3.0 требует Java 7 или выше для запуска приложения. Вы должны попробовать JMeter, если ваша цель – оптимизировать производительность веб-приложения..

WRK

WRK Это еще один современный инструмент измерения производительности, который загружает ваш веб-сервер и обеспечивает задержку, количество запросов в секунду, скорость передачи в секунду и т. д..

С помощью wrk вы можете указать запускать нагрузочный тест с несколькими потоками..

Давайте рассмотрим пример запуска теста в течение 5 минут с 500 одновременными пользователями с 8 потоками..

wrk –t8 –c500 -d300s HTTP: // локальный

HTTPLoad

Httpload может прочитать несколько URL-адресов из файла, или вы можете указать его в аргументе команды. Последняя версия поддерживает SSL / TLS, что означает, что вы можете запросить URL-адрес веб-страницы с поддержкой HTTPS (SSL).

При тестировании URL-адреса с поддержкой SSL у вас есть возможность указать шифр, и простая команда теста будет выглядеть так.

httpload -cipher AES256-SHA -parallel 200 -секунда 120 URL_LIST.txt

Чтобы понять это лучше, выше будет запустить тест против 200 одновременных пользователей в течение 2 минут.

Curl-погрузчик

завиток-погрузчик написан на C для имитации загрузки приложения и поддерживает SSL / TLS. Наряду с тестированием веб-страницы, вы также можете использовать этот инструмент с открытым исходным кодом для загрузки серверов FTP.

Вы можете создать план тестирования с сочетанием HTTP, HTTPS, FTP и FTPS в одной пакетной конфигурации.

httperf

httperf это высокопроизводительный инструмент, ориентированный на микро- и макроуровни. Поддерживает протоколы HTTP / 1.1 и SSL.

Если вы ожидали количество одновременных пользователей и хотите проверить, может ли ваш запрос обслуживать номер запроса, используйте следующую команду.

httperf –server localhost –port 80 –num-conns 1000 –rate 100

Приведенная выше команда будет тестировать со 100 запросами в секунду на 1000 HTTP-запросов.

Цзун

Цзун это многопротокольный распределенный инструмент для стресс-тестирования, предназначенный для нагрузок на серверы HTTP, SOAP, PostgreSQL, LDAP, XAMP, MySQL. Он поддерживает HTTP / 1.0, HTTP / 1.1, а файлы cookie обрабатываются автоматически..

Создание отчета возможно с Tsung.

Вывод

Надеюсь выше инструменты для тестирования дать вам представление о производительности вашего веб-сервера и помочь решить, что лучше всего подходит для вашего проекта.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map