Как проверить сервер Web на выносливость.

Создание корпоративного сервера Web — процедура довольно непростая. При его разработке компании необходимо решить не только вопросы дизайна и содержания, но и производительности или, другими словами, обработки запросов пользователей. Оценить, насколько быстро будет работать сервер, можно несколькими путями. Например, среднее время загрузки страниц можно спрогнозировать, исходя из их объема и насыщенности графикой, и установить на основании этой величины ограничения на максимальный полный объем одной страницы. Однако куда сложнее спрогнозировать поведение сервера при множественных запросах пользователей, так как это вопрос не только дизайна, но еще и платформы и внешнего канала. Теоретические расчеты здесь малопродуктивны, требуется эксперимент.

ВСЕ НА ОДНОГО

Очевидно, что наиболее адекватные результаты дают испытания «в лоб», когда за рабочие места садятся много-много пользователей, каждый из которых загружает сервер как только может. Правда, с организационной точки зрения такое испытание представляется трудноосуществимым и малоэффективным. Впрочем, никто и никогда не тестирует сетевые ресурсы подобным образом, поскольку куда удобнее эмулировать работу нескольких рабочих мест на одном компьютере при помощи специальных утилит. В частности для тестирования сервера Web можно воспользоваться бесплатной утилитой VeloMeter, распространяемой компанией Binary Evolution (http://www.binaryevolution.com). VeloMeter представляет собой код, написанный на Java, благодаря чему теоретически она может применяться практически на любой платформе (тем не менее утилита все-таки существует в нескольких версиях — для каждой из платформ). Наличие исходного кода вкупе с открытой лицензией позволяет модифицировать эту утилиту в соответствии с потребностями и умением программировать на Java. Для запуска VeloMeter требуется наличие JDK версии не младше 1.1.6 (текущая, доступная на http://www.javasoft.com, имеет номер 1.1.8) или же соответствующей runtime-библиотеки JRT. Совокупный объем загружаемого на машину ПО, таким образом, к сожалению, получается немалым, хотя JDK или JRT могут, в принципе, пригодиться и для других целей.

VeloMeter обладает предельно простым интерфейсом. После запуска программы пользователю предлагается ввести тестируемый URL, точнее, доменное имя сервера и список из нескольких URL (можно, конечно, обойтись и одним адресом), а также количество условных пользователей и производимых ими запросов. После ввода начальных условий программа запускает несколько (или множество) процессов, имитирующих интенсивное обращение к ресурсам сервера. Результат выводится в виде графика среднего времени отклика сервера в зависимости от количества пользователей.

Результат налицо. «Поиграв» параметрами, пользователь может
определить предел возможностей своего сервера Web.

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

На наш взгляд, стрессовое тестирование надо производить либо из локальной сети, либо по очень мощному каналу Internet, чтобы узкое «бутылочное горлышко» не приводило к искажению результатов. Заметим также, что в рассматриваемом варианте VeloMeter не настраивается на работу через proxy-сервер или брандмауэр. Среди дополнительных возможностей VeloMeter — параллельное тестирование двух серверов, позволяющее сравнить возможности «зеркал». Кроме того, в качестве URL можно задать командную строку запроса формы или сценария cgi. Это дает возможность оценить работу поисковой машины, самого чувствительного, пожалуй, к нагрузке ресурса.

Утилита внешне и функционально более чем проста, но при таких условиях распространения большего требовать и не приходится. Улучшить интерфейс и расширить функциональность можно путем дополнительного программирования или покупки коммерческой версии продукта — VeloMeter Pro.

ЗАКЛЮЧЕНИЕ

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

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

ОБ АВТОРЕ

C Александром Авдуевским можно связаться по адресу: shura@lanmag.ru.