Как интерпретировать результаты осады и / или Apache Bench

У нас есть сайт, управляемый MySQL, который иногда получает 100 000 пользователей в течение 48 часов, все они заходят на сайт и совершают покупки.

Мы пытаемся смоделировать такую ​​нагрузку с помощью таких инструментов, как Apache Bench и Siege.

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

Я хочу спросить: какие вещи мы должны тестировать, чтобы предвидеть такой трафик?

50 одновременных пользователей 1000 раз? 500 одновременных пользователей 10 раз?

Мы смотрим на ошибки БД, тайм-ауты apache и время ответа. На что еще мы должны смотреть?

Это расплывчатый вопрос, и я знаю, что на него нет «правильного» ответа, мы просто ищем некоторые общие мысли о том, как определить, с чем реально может справиться наша инфраструктура.

Заранее спасибо!


person michael0129    schedule 02.11.2010    source источник


Ответы (2)


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

В зависимости от того, какая еще информация у вас под рукой, это может помочь вам рассчитать количество одновременных пользователей для моделирования: Калькуляторы виртуальных пользователей

Полное время загрузки страницы, видимое конечным пользователем, обычно является наиболее важным показателем для оценки производительности системы. Вы также захотите посмотреть количество отказов для всех транзакций. Вы также должны внимательно следить за транзакциями, которые никогда не завершаются. Некоторые инструменты тестирования не очень хорошо сообщают об этом, позволяя смоделированным пользователям зависать на неопределенное время, когда сервер не отвечает ... и не сообщая об этом состоянии. Ищите инструменты, которые сообщают о количестве пользователей, ожидающих на данной странице или транзакции, и о среднем времени ожидания этих пользователей.

Что касается показателей на стороне сервера, на каких еще технологиях построено ваше приложение? Вы захотите по-разному взглянуть на приложение .NET и приложение PHP.

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

person CMerrill    schedule 03.11.2010

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

База данных обычно является критически важной частью инфраструктуры, поэтому я бы посмотрел на запись количества и продолжительности ожидания блокировок, а также количества и продолжительности операторов db.

Еще один ключевой момент, на который следует обратить внимание, - это длина дисковой очереди.

В основном процесс состоит в том, чтобы искать медленные ответы либо на всем сайте, либо на определенных страницах, а затем уточнять причину.

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

person Nat    schedule 03.11.2010