3 декабря 2010 г.

Проверяем отказоустойчивость сайта (с хабра)

источник: http://habrahabr.ru/blogs/hi/109247
автор: sunnybear

Проверяем отказоустойчивость сайта


Результаты тестирования. Время ответа сервераЭто очередной пост их уже традиционной предновогодней серии про проверку отказоустойчивости сайта и готовности его принять всех ваших посетителей, озадаченных выбором подарков или предновогодними скидками. В этом выпуске я рассмотрю создание тестов в расширенном режиме с использованием записи действий (Proxy recorder), что позволяет почти полностью эмулировать поведение реальных пользователей из реального браузера у вас на сайте. Также немного будет затронута тема анализа самих графиков по отказоустойчивости.
Итак, поехали.

Речь пойдет об использовании сервиса Load Impact. Для начала нам нужно завести сам тест.



Создание теста


Создание теста. Шаг 1Большинство описываемых возможностей сервиса доступно только после регистрации, но если нужно просто проверить, как ведет себя сайт под нагрузкой, можно задать адрес сайта прямо на главной странице. И затем посмотреть, как можно интерпретировать графики (об этом в конце статьи). Если же интересует более детальная и точная оценка, то стоит все же зарегистрироваться.

Запись действий (Proxy recorder) доступна в Advanced mode -> Load script generation -> Record session. Здесь можно задать набор HTTP-запросов для эмуляции любых посещений вашего сайта и любого количества одновременных посетителей. Очень удобный инструмент. Для его использования нужно только задать соответствующие настройки в вашем браузере.

По поводу настроек.

Создание теста. Шаг 2: конфигурация проксиПри начале записи выдается подсказка по настройки прокси (видимо, с готовым скриншотом для текущего браузера). Это позволяет реально за минуту вбить все нужные параметры. Единственное, на что стоит обратить особое внимание, — это порт. Для каждого нового использования он создается отдельно, и отдельно же проверяется.

При использовании прокси становится возможным тестирование всех динамических и AJAX-запросов: входе посещения сайта они просто записываются, и затем становятся доступными в соответствующем поле при создании теста…

Создание теста. Шаг 2: подтверждение проксиНо перед тем, как использовать прокси, стоит проверить, что все настроено верно. Иначе придется записывать весь тестируемый сценарий снова.

Наконец, последний этап в формировании теста — это выбор пределов по пользователям и шага возрастания нагрузки.

Создание теста. Шаг 2: выбор шагаДля небольших сайтов, как я уже упоминал выше, достаточно 50 одновременных посещений. Уже на этих числах будет понятно, готов ли сайт к хоть какой-нибудь нагрузке или нет.

Для простого тестирования отказоустойчивости сайта можно задать предел в районе 500-1000 пользователей с шагом 100. Это даст вполне вменяемую картину поведения сайта под нагрузкой, но сильно сократит как время тестирования, так и лимиты по трафику.

В случаее необходимости детальной картины придется задать шаг в 10-20 пользователей. Это гарантирует, что тестирование пройдет максимально точно и что вы получите правдивую оценку мощности сайта.

После того как все параметры заданы, можно подтвердить тест (для пользователей меньше 500 — обычная формальная, потом будет необходимо наличие файла loadimpact.txt с вашим логином в корне сайта). Также при сохранении настроек производится пробный запуск, чтобы понять, все ли задано верно.

Запускаем тест


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

Результаты тестирования. Время ответа сервераОсновными графиками является время ответа сервера (user load time) и полное время загрузки (accumulated user time). Последний параметр может иметь мало отношения к реальному времени загрузки сайта под нагрузкой (поскольку основные сервера стоят в Швеции), но динамика будет показан абсолютно точно.

Время ответа сервера отражает серверные издержки на создание HTML-документа при соответствующем числе одновременных посещений сайта. Критической здесь будет точка в 10-15 секунд, когда до 80% пользователей начнут просто уходить с сайта, не дожидаясь его загрузки. Также при соответвующих настройках сервера могут начать выдаваться ошибки истечения времени ожидания (nginx, например).

Для хороших сайтов график отказоустойчивости напоминает экспоненту (как на примере выше), которая пересекает значение в 10 секунд в 3-5 раза дальше, чем текущая пиковая нагрузка. Это означает, что при резком увеличении числа посетителей, ваш сайт, в принципе, нагрузку выдержит.

Хуже обстоит дело, если график резко идет вверх даже при увеличении числа посетителей в 2 раза (или даже при текущем пиковом значении). В этом случае нужно предпринимать оптимизирующие действия, и срочно.

Но совсем хорошо, когда при любой (тестируемой) нагрузке график будет прямой (с небольшими отклонениями). Это значит, что запас по прочности у сайта очень и оень хороший.

Результаты тестирования. Полное время загрузкиТакже в результатах тестирования можно сравнить несколько различных ресурсов (HTTP-запросов), чтобы отыскать наиболее узкие месте (иногда это могут быть даже динамические картинки, которые потребляют слишком много серверного времени). В этом случае даже при быстрой отдаче HTML-документа сайт будет загружаться медленно. Но почти всегда основные проблемы находятся в скорости создания HTML-страницы.

Резюме


Load Impact является уникальным инструментом для проведения нагрузочного тестирования, и при этом позволяет самостоятельно задавать любые сценарии пользовательского поведения и проверять, насколько сайт к ним готов. При этом большая часть информации доступна бесплатно при проведении теста до 50 пользователей.

Надеюсь, эта статья поможет подготовить ваши сайты к новогоднему буму :)

Комментариев нет:

Отправить комментарий