[Daily Fresh Mushroom] Стресс-тестирование вне бизнес-сценариев — хулиганство

Java
[Daily Fresh Mushroom] Стресс-тестирование вне бизнес-сценариев — хулиганство

Зачем стресс-тест

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

  1. Менеджер проекта сказал провести стресс-тест;
  2. Заказчик требует отчет об испытаниях под давлением;
  3. Я просто хочу знать, насколько круты программы, которые я написал;
  4. Если вы бездействуете и скучаете, проверьте эффект, чтобы увидеть эффект;
  5. Я до сих пор отказываюсь верить, что производительность написанного мной кода настолько низка, что я хочу протестировать его сам;
  6. ...

Что нужно для стресс-тестирования

Те, кто занимается аутсорсинговыми проектами, вероятно, поймут, что цель стресс-тестирования — просто красивый «отчет о стресс-тестировании (результат)». Однако многие сценарии действительно требуют стресс-тестирования.

исследование новых технологий

Прежде чем внедрить новую технологию, необходимо провести ее оценку, а стресс-тестирование — это только один этап.

Производительность новой версии

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

изменение параметра

Корректировка параметров может привести к некоторым неожиданным проблемам, таким как 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 секундQPS5000, при использованииwrkизQPSИх может быть всего 1000, и на это есть определенные причины.jmeterКогда количество подключений достигает максимального значения, количество запросов в секунду уже рассчитано, что приводит к большому количеству запросов в секунду в краткосрочном стресс-тесте.По мере увеличения времени стресс-тестаQPSуменьшится.