Статьи

Остановите ваше веб-приложение — нагрузочное тестирование по HTTP

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

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

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

Siege — это бесплатный инструмент UNIX (Linux / Mac OS и т. Д.) От JoeDog Software, который предоставляет именно это.

Siege — утилита для регрессионного тестирования и бенчмаркинга http. Он был разработан, чтобы позволить веб-разработчикам измерять производительность своего кода под принуждением, чтобы увидеть, как он выдержит нагрузку в Интернете. Siege поддерживает базовую аутентификацию, файлы cookie, протоколы HTTP и HTTPS. Это позволяет пользователю подключаться к веб-серверу с настраиваемым числом одновременно симулируемых пользователей. Эти пользователи помещают веб-сервер «в осаду».

Siege можно установить в Mac OS через MacPorts или скомпилировать из исходного кода, если у вас есть XCode и любитель командной строки. Если вы работаете на ПК с Windows, вы можете запустить его под Cygwin или использовать бесплатный сервер VMware для установки дистрибутива Linux, такого как Ubuntu, в качестве виртуальной машины.

Просмотрите документацию, а также файл ~ / .siegerc и вывод siege –help, чтобы получить представление о том, что он может делать. В частности, файл URLs дает вам большой контроль над тем, как различные части вашего веб-приложения проходят тестирование.

Я оставлю вам очень простой пример, чтобы заставить мяч двигаться:

# siege -b -c5 -r20 http://test.ubuntu.vm/static.html

** SIEGE 2.66
** Preparing 5 concurrent users for battle.
The server is now under siege..      done.
Transactions:                    100 hits
Availability:                 100.00 %
Elapsed time:                   0.18 secs
Data transferred:               0.01 MB
Response time:                  0.01 secs
Transaction rate:             555.56 trans/sec
Throughput:                     0.07 MB/sec
Concurrency:                    4.83
Successful transactions:         100
Failed transactions:               0
Longest transaction:            0.03
Shortest transaction:           0.00
 # siege -b -c5 -r20 http://test.ubuntu.vm/randomsleep.php

** SIEGE 2.66
** Preparing 5 concurrent users for battle.
The server is now under siege..      done.
Transactions:                    100 hits
Availability:                 100.00 %
Elapsed time:                   2.95 secs
Data transferred:               0.01 MB
Response time:                  0.07 secs
Transaction rate:              33.90 trans/sec
Throughput:                     0.00 MB/sec
Concurrency:                    2.36
Successful transactions:         100
Failed transactions:               0
Longest transaction:            2.69
Shortest transaction:           0.00