Как правильно проводить стресс-тестирование веб-приложений?
Как правильно проводить стресс-тестирование веб-приложений?

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

Когда дело доходит до стресс-тестирования, мы подразумеваем стресс-тестирование на стороне сервера. На самом деле, это одностороннее стресс-тестирование, включающее стресс-тестирование на стороне сервера и внешнее стресс-тестирование.

Следующий контент будет расширен из следующих частей:

  1. webСтресс-тестирование приложенияобъем
  2. Процесс стресс-тестирования
  3. Приложение 1: Фронтальный стресс-тест
  4. Пополнить2:задняя частьстресс-тест
  5. Обмен учебными материалами

1. Объем стресс-тестирования веб-приложений

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

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

Кроме того, исследование Google DoubleClick показывает, что если время загрузки веб-страницы увеличится на 1 секунду, пользователи потеряют 10%, а если время загрузки превысит 3 секунды, пользователи уйдут.

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

Полный процесс стресс-тестирования веб-приложения показан на рисунке ниже.

2. Процесс испытания давлением

1. Определите объем испытаний под давлением и цели испытаний под давлением.

Диапазон измерения давления:еслида Совершенно новый проект,В принципе, все функции и интерфейсы должны быть подвергнуты стресс-тестированию. Если есть новые требования к старым проектам,нужно оценить масштаб воздействия,Определите, требуют ли старые функции и интерфейсы стресс-тестирования.

Цель стресс-теста:еслида Совершенно новый проект,Ориентировочная цель должна быть установлена ​​на основе базовой ситуации и опыта в отрасли.,Если да старый проект,В качестве эталонных целей можно использовать исторические пики трафика.

2. Разработайте план стресс-тестирования

На основе ожидаемых целей на предыдущем этапе сформулируйте план стресс-тестирования. В частности, укажите: среду стресс-тестирования, время стресс-тестирования, соответствующее ответственное лицо, инструменты или платформы тестирования, критерии приемки.

Среда стресс-тестирования:Чтобы восстановить реальную сцену давления,Обычно для стресс-тестирования выбирается предварительная или производственная среда.

Время испытания давлением:Стресс-тестирование обычно проводится после завершения функционального тестирования или тестирования интерфейса.。

Инструменты или платформы стресс-тестирования:Можно использовать предварительные испытания под давлением.PageSpeedи другие платформы,задняя Обычно используется частичное измерение давления jmeter、loadrunnerждатьинструмент。(Подробности см. в Приложении 1 и Приложении 2.

Критерии приемки:В общем, необходимо добиться Цель Ориентировочная стоимость стресс-теста

3. Подготовка к испытаниям под давлением

Машина для стресс-тестирования: подготовьте группу машин для стресс-тестирования для отправки запросов.

Сервер: поскольку трафик стресс-теста будет высоким, необходимо заранее подготовить кластер серверов для обработки трафика или расширения мощности.

Подготовка данных: подготовьте данные для стресс-тестирования, которые обычно необходимо отличать от реальных данных; подготовьте сценарии стресс-тестирования, которые обычно требуют добавления идентификаторов, чтобы отличить их от реального трафика.

4. Проведите стресс-тестирование

Давление: В процессе подачи давления начните с меньшего расхода и постепенно увеличивайте давление.

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

5、Наблюдение за испытанием под давлением&Анализ узких мест

Как оценить доступность приложения?

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

Ниже приведены некоторые распространенные методы анализа аномалий:

  • Вероятность успеха не соответствует стандарту: проверьте журнал ошибок, устраните основную причину ошибки и выполните настройку производительности.
  • Время отклика не соответствует стандарту: проверьте журнал ошибок.、Результаты отслеживания ссылок、Сервер Показатели производительности、база данных/Индикаторы мониторинга промежуточного программного обеспечения,Найдите конкретную причину длительного времени отклика
  • Пропускная способность не соответствует стандарту. Если уровень успешности и время ответа соответствуют стандарту, рекомендуется постоянно увеличивать количество имитируемых пользователей, повторно нагружать тест и проверять результаты теста.

Когда вам нужно добавлять серверы?

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

  • Первая ситуация: серверcpu, память и другие показатели не достигли узкого места (обычно уровень использования достигает 70%-80% как узкое место),Такие показатели, как qps, rt, частота ошибок и т. д., являются ненормальными.,На этом этапе вам нужно повторить предыдущий шаг,Устранение неполадок и оптимизация
  • Вторая ситуация: Отклонений в таких показателях, как rt и коэффициент ошибок, нет.,серверный процессор, использование памяти вот-вот достигнет узкого места,и не оправдал ожиданий Цель стресс-теста,В настоящее время эту проблему невозможно решить путем настройки.,Нужно увеличить сервер

6. Принятие

достичь ожидаемых целей:достичь ожидаемых целей, в целом можно считать, что испытание под давлением выдержало

еще нетдостичь ожидаемых целей:По разным причинам(ресурс、Бюджетждать)еще нетдостичь ожидаемых целей,Менеджеры по продуктам и менеджеры по исследованиям и разработкам обязаны подтвердить результаты стресс-тестов.

7. Отправьте отчет о стресс-тестировании.

Как написать хороший отчет о стресс-тестировании можно посмотреть здесь. Как составить изысканный отчет о тестировании производительности? - Чжиху

8. Проект выходит в интернет

После выполнения предыдущих шагов проект можно выпустить и запустить.

Приложение 1: Испытание давлением на входе

google Разработчики предложилиЖЕЛЕЗНОДОРОЖНАЯ модельдля измерения производительности интерфейса вашего приложения,Прямо сейчас отклик, анимация, холостой ход и загрузка.

Широко используемые ключевые индикаторы модели RAIL:

Использование инструмента:PageSpeed

PageSpeed ​​— это инструмент автоматизации с открытым исходным кодом от Google. Просто установите расширение PageSpeed ​​и запустите его.

Результаты отчета следующие:

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

Дополнение 2: Внутреннее стресс-тестирование

Бэкэнд относится к серверу, а стресс-тест бэкэнда — это стресс-тест сервера, который также можно назвать стресс-тестом сервера.

В процессе стресс-тестирования мы обычно обращаем внимание на следующие показатели: qps (количество обработанных запросов), rt (время ответа), error (частота сообщений об ошибках), cup (загрузка процессора), mem (использование памяти), нагрузка ( нагрузка) ), трафик (скорость сети).

Наблюдая за такими ключевыми показателями, как qps, rt и error, можно обнаружить узкое место в производительности сервера. Если оно ниже ожидаемого, необходимо его настроить.

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

инструмент:Обычно используется для испытаний под давлениеминструментиметьloadrunnerиjmeter(Конец статьииметьобучающее видео)

Jmeter — это бесплатный инструмент тестирования с открытым исходным кодом, разработанный на Java. Он в основном используется для тестирования производительности. JMeter можно использовать для моделирования огромных нагрузок на серверы, сети или объекты. Он имеет богатый графический интерфейс + настройку сценариев. простой в использовании.

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

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose