Зачем стресс-тест
На этот вопрос есть много ответов, и внутренний ответ каждого человека может быть разным. Например, начальник хочет, чтобы я был хулиганом...
- Менеджер проекта сказал провести стресс-тест;
- Заказчик требует отчет об испытаниях под давлением;
- Я просто хочу знать, насколько круты программы, которые я написал;
- Если вы бездействуете и скучаете, проверьте эффект, чтобы увидеть эффект;
- Я до сих пор отказываюсь верить, что производительность написанного мной кода настолько низка, что я хочу протестировать его сам;
- ...
Что нужно для стресс-тестирования
Те, кто занимается аутсорсинговыми проектами, вероятно, поймут, что цель стресс-тестирования — просто красивый «отчет о стресс-тестировании (результат)». Однако многие сценарии действительно требуют стресс-тестирования.
исследование новых технологий
Прежде чем внедрить новую технологию, необходимо провести ее оценку, а стресс-тестирование — это только один этап.
Производительность новой версии
Если вы прилежны, например, при обновлении версии некоторого промежуточного программного обеспечения, вам необходимо выполнить простой стресс-тест, который может устранить узкое место в производительности, связанное с внешними зависимостями.
изменение параметра
Корректировка параметров может привести к некоторым неожиданным проблемам, таким как JVM настраивает стратегию сборки мусора, TCP меняется на UDP и т. д., и все это требует регрессионного стресс-тестирования.通常,不会有问题;意外,总发生在不经意间。
Метрики стресс-тестов
основные проблемы
QPS
Скорость запросов в секунду, QPS — это мера того, сколько трафика обрабатывает конкретный сервер запросов в данный момент времени. единицаrequest/s
.
У инструментов общего измерения давления будет этот простой и понятный индикатор.每秒处理的请求数量
.
6796 requests in 10.05s, 783.13KB read
Requests/sec: 676.21
Transfer/sec: 77.92KB
Например, текущая обработка в секунду676.21
запрос.
RT
Время отклика, существует множество показателей, таких как минимальное время отклика, среднее время отклика, максимальное время отклика и т. д. Подробные показатели такжеP50
,P95
,P99
и т.д
Latency Distribution
50% 23.03ms
75% 24.01ms
90% 25.38ms
99% 32.33ms
Например,50%
запрос в23.03ms
вернуть ответ.
VU
Виртуальные пользователи, система имитирует одновременных пользователей. Основная цель состоит в том, чтобы в максимальной степени имитировать действия пользователя, чтобы получить более точные данные измерения давления.Этот параметр обычно формулируется персоналом, занимающимся измерением давления, и градиент увеличивается.
阶段1: 50虚拟用户,压测1小时;
阶段2: 100虚拟用户,压测1小时;
阶段3: 150虚拟用户,压测1小时;
阶段4: 200虚拟用户,压测1小时;
阶段5: 250虚拟用户,压测1小时;
Как правило, для достижения оптимальной нагрузкиQPS
последуетVU
Количество увеличивается пропорционально. Например,50VU
внизQPS
да1000
,Так100VU
внизQPS
подойдет2000
.
Загрузка ОС, внешних систем и т.д.
Во время стресс-теста также необходимо обращать внимание на нагрузку на сервер и сетевой ввод-вывод.Если это проект Java, также необходимо наблюдать за JVM. Если речь идет о периферийных системах, таких как Mysql, Redis и т. д., ее также следует включить в сферу наблюдения.
научиться наблюдать
Функции, которые хорошо работают
- Время отклика показало устойчивую тенденцию во время теста;
- Скорость запросов следует той же линейной шкале, что и виртуальный пользователь (если VU увеличивается, скорость запросов также увеличивается);
Возможности для достижения максимальной производительности
- По мере увеличения числа виртуальных пользователей количество активных незавершенных запросов продолжает увеличиваться, а количество запросов в секунду (завершенных запросов) выравнивается (или даже уменьшается). В этот момент система перегружена, что приводит к увеличению времени отклика.
- Частота отказов HTTP увеличилась
Характеристики проблем с производительностью/узких мест
- Время отклика значительно увеличилось во время тестирования;
- Время отклика значительно увеличилось, затем быстро достигло дна и осталось неизменным (HTTP ухудшился);
- QPS не увеличивается с увеличением VU, а время отклика начинает увеличиваться, и есть подозрение, что достигнута максимальная пропускная способность;
характеристики отказа
- Высокая частота ошибок HTTP
- Высокая нагрузка на систему при низком количестве запросов в секунду
легенда
В целом визуальные диаграммы более удобны для анализа.
Скорость запросов следует той же шкале, что и у виртуальных пользователей.
Из этого рисунка видно, что в случае низкого отрицательного давления оба графика имеют одинаковые значения.斜坡
из. иQPS
существует12:18
Когда внезапное падение, наблюдайте за JVM, вы можете знать, что естьFGC
.
Время отклика не изменилось во время тестирования
Поскольку это стресс-тест внешней сети, мы допускаем колебания сети в определенном диапазоне, как показано на рисунке выше, наблюдайтеP90
,P95
Две кривые, примерно в пределах диапазона наших предсказаний. Сетка справа также показывает, что большая часть времени запроса сосредоточена в256ms
прибыть521ms
Между ними общее рассеяние остается постоянным.
Инструмент измерения давления
Разные средства измерения давления имеют разные достоинства и недостатки, да и показатели, получаемые при настройке измерения давления, тоже будут совершенно разными. Когда мы проводим стресс-тестирование, мы должны обнаружить различные проблемы в стресс-тестировании.
Например, я используюjmeter
Стресс-тест на 30 секундQPS
5000, при использованииwrk
изQPS
Их может быть всего 1000, и на это есть определенные причины.jmeter
Когда количество подключений достигает максимального значения, количество запросов в секунду уже рассчитано, что приводит к большому количеству запросов в секунду в краткосрочном стресс-тесте.По мере увеличения времени стресс-тестаQPS
уменьшится.