С точки зрения бизнеса
Сегодня множество веб-сайтов принадлежит бизнесу и их основной задачей является продажа услуг или продукции.Всякий, кто ведет бизнес в Интернете, видел статистику, насколько быстро клиент уходит к конкуренту, если веб-сервер компании реагирует слишком медленно или вообще не отвечает.А разве вы сами не отменяли покупки в интернет-магазине только потому, что веб-сервер не отвечал более 5-20 секунд?! Если посетители вашего веб-сайта увидят, что ваш он стал тормозить, прежде чем вы успеете это устранить, это может стоить вам больших денег!Для владельца веб-сайта это означает только одно: свой веб-сайт необходимо тестировать и контролировать!При этом важно тестировать не только функциональность (делает ли веб-сайт то, что заложено в код) и удобство (понятно ли пользователю, что и как следует делать в окне его браузера), но и производительность (получают ли пользователи свои результаты в приемлемое время).Целью должно быть обеспечение для клиентов возможности в любое время получать правильные отклики на нажатия мыши в течение нескольких секунд! Убедитесь, что 95% запросов обрабатываются менее чем за 10 секунд.
С технической точки зрения
Если взглянуть на вопрос не с точки зрения бизнеса, а с технической, мы обнаружим, что надо дать ответы на следующие вопросы, чтобы достичь бизнес-целей:
- Готов ли ваш веб-сервер к ожидаемому вами наплыву пользователей?
- Готов ли ваш веб-сервер к росту нагрузки через месяц или через год?
- Выдержит ли ваш веб-сервер большой наплыв пользователей (например, если его упомянут по национальному телевидению)?
- Сколько пользователей может обслужить ваш веб-сервер, прежде чем они начнут получать сообщения об ошибках или тайм-аутах?
- Сколько времени требуется для посетителя, чтобы загрузить страницу при малой, средней и большой нагрузке на веб-сервер?!
- Имеет ли ваше приложение или корзина покупок обслуживать нескольких пользователей одновременно?!
- Был ли код для CGI, БД или сценариев написан с расчетом на максимальное быстродействие и правильно ли они взаимодействуют под большой нагрузкой?
- Хорошо ли выполняет свою работу хостинг?
- Достаточна ли пропускная способность у подключения к Интернету?
- Является ли используемое дорогостоящее оборудование слишком слабым или слишком мощным?
Вы должны знать ответы на все эти вопросы!
Тестирование производительности, нагрузочное или стрессовое тестирование?
Эти три слова часто используются как синонимы, однако между ними есть различия:
Тесты производительности
Используются для тестирования каждого из компонентов веб-сервера или веб-приложения, чтобы выяснить, какие из компонентов являются медленными и как их ускорить. Подразумевается тестирование отдельных веб-страниц и (или) сценариев.При выполнении этого теста, Webserver Stress Tool создает порядка 20-40 одновременных запросов на каждый из URL-адресов веб-сайта и регистрирует среднее время ожидания ответа на запрос. Изменяя программный код, программист может найти те места, изменением которых можно добиться роста производительности веб-сайта. Обычно при выполнении такого теста с веб-страницы не подгружаются изображения и прочие элементы оформления, что позволяет получить более точные результаты, касающиеся работы именно сценариев.
Нагрузочные тесты
В завершение выполняется тестирование веб-сайта с его ожидаемой нагрузкой. Оно имитирует работу сайта в реальных условиях.Сначала необходимо определить максимальное время ожидания запроса клиентом, этот параметр относится к бизнес-эффективности и удобству использования веб-сайта, а не к техническим аспектам. В этом месте необходимо рассчитать влияние медленного сайта на продажи компании и стоимость поддержки.Затем необходимо рассчитать ожидаемую нагрузку на веб-сайт и ее характер (см. следующий раздел с подробным описанием расчета нагрузки), после чего сымитировать ее с помощью Webserver Stress Tool.После этого можно будет сравнить результаты теста с тем временем ожидания запроса, которого необходимо достичь. Вы поймете, что надо что-то делать, если увидите, что время запросов превышает тайм-аут или даже выдаются сообщения об ошибках!
Стресс-тесты
Моделируются атаки на веб-сервер по методу «грубой силы» с целью его перегрузки.В реальных ситуациях такое может случаться при массовом всплеске запросов от пользователей, намного превышающем обычный уровень – например, спровоцированном большим количеством ссылок на веб-сайт (представьте себе, что ваш веб-сайт упомянули на национальном телевидении).Целью стресс-тестов является изучение порогов нагрузки, при которых веб-сервер выдает ошибки и того, сможет ли он самостоятельно вернуться к нормальной работе после наплыва запросов, или произойдет отказ и его придется возвращать к работе вручную.
Расчет нагрузки и ее характера
Это, вероятно, самый сложный вопрос при проведении тестов производительности веб-сайтов (ответы на остальные вопросы уже были даны в разделе о Webserver Stress Tool).Во-первых, помните, что существует разница между пользователями, транзакциями (действиями), просмотрами страниц и хитами (обращениями к веб-сайту):
- Один пользователь создает несколько трансакций (например, посещение начальной страницы, поиск товара, просмотр сведений о товаре, покупка товара и т.п.).
- Одна трансакция создает несколько вариантов отображения (например, «добавить товар в корзину», «проверка корзины», «ввод данных для оплаты кредитной карты» и т.п.).
- Один вариант отображения создает несколько обращений, или хитов (например, фреймы, изображения, апплеты и т.п. компоненты одной веб-страницы).
- Если у вас уже есть свой веб-сайт в Интернете, то уже стоит начать пользоваться подходящим анализатором рабочих журналов (логов) сайта. Это поможет узнать, сколько людей получает доступ к веб-сайту за день и за час, какие страниц и (или) сценарии используются наиболее часто и т.п.
Если же вы запускаете новый веб-сайте, то искать эти цифры вам придется самостоятельно. Одним из способов определения характера нагрузки может быть:
- Этап 1. С точки зрения бизнеса придумайте целевое число пользователей.
- Этап 2. Определите несколько различных «типов пользователей (например, подросток, взрослый бизнес клиент, пенсионер и т.д.) и их модели посещения страниц вашего веб-сайта. Отслеживайте их доступ к станицам веб-сайта и собирайте эту статистику.
В итоге у вас появится список из URL-адресов и частоты их использования (рейтинг их популярности). При этом есть разница между числом пользователей, одновременно использующих ваш сайт, и числом пользователей, посылающих на ваш сайт одновременные запросы!Если у вас есть 200 одновременно работающих пользователей, нажимающих на ссылку каждые 20 секунд, то у вас есть 600 кликов в минуту (3 на одного пользователя в минуту) или 10 одновременно работающих пользователей в секунду. Это число и будет количественно имитироваться с помощью Webserver Stress Tool.Не забудьте учесть то, что дополнительно к средней нагрузке также могут быть всплески нагрузки, вызванные маркетинговой активностью (например, информационными бюллетенями, баннерами, рекламными роликами и т.п.) или просто сезонными причинами (например, в День Святого Валентина для веб-сайта цветочного магазина).Теперь внесите все эти данные в Webserver Stress Tool, нажмите «Start Test» и скрестите пальцы на удачу!
Когда делать тестирование?
Ответ прост: Невозможно начинать тестировать производительность заранее, еще до написания веб-приложений!Самая лучшая идея – начать тестирование производительности до завершения написания всего кода! Раннее тестирование базовых технологий (сеть, балансировка нагрузки, серверы приложений и баз данных, и веб-серверы) для планируемых уровней нагрузки может сэкономить много денег, так как позволит сразу выявить недостаточную производительность оборудования.{удалено} Уже на этом этапе может быть смысл в проведении первых стресс-тестов.Расходы на устранение проблем с производительностью резко увеличиваются с момента начала разработки и до выхода сайта на этап промышленной эксплуатации, и могут оказаться невероятно высокими в случае веб-сайта, который сразу был открыт для доступа из сети.Во время разработки ПО все программисты должны иметь доступ к инструментам тестирования производительности, чтобы они могли на ранней стадии тестировать свой собственный код на производительность и проблемы параллельного выполнения (например, вызванные блокировками БД и другими взаимными исключениями). Каждый разработчик должен нести ответственность не только за функциональность своего кода, но и за хорошую работу его страниц!Как только заработают первые несколько веб-страниц, должны начаться нагрузочные тесты, которые должны стать частью рутины регулярных тестирований – каждый день или неделю, или для каждой сборки ПО.
С чего начать?
Мы предлагаем загрузить пробную версию нашего продукта Webserver Stress Tool и как можно скорее найти ответы на вышеперечисленные вопросы!
Продукт лицензируется по числу пользователей. Кроме того есть 2 редакции - Professional (100 нагрузочных пользователей) и Enterprise (10,000 нагрузочных пользователей)