При настройке производительности системы крайне важно постоянно отслеживать влияние любых изменений, которые вы вносите. Следует обеспечить инструментарий для обеспечения постоянного доступа к согласованным метрикам.
Веб-приложения ничем не отличаются. Тем не менее, они могут быть сложными животными, поэтому вы можете извлечь выгоду из множества различных уровней инструментовки. Если вы строите на основе многофункциональной инфраструктуры, у вас, вероятно, есть доступ к таймерам и счетчикам в вашем коде. Они очень полезны для определения времени выполнения различных этапов вашего приложения и могут подсчитывать и рассчитывать время вызовов внешних систем, таких как запросы 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