Скриптируемые инструменты нагрузочного тестирования с поддержкой HTTP/2 Cleartext

Вопрос или проблема

Я разрабатываю API, который может работать по протоколу HTTP/2 Cleartext (когда развернут на месте), а также по протоколам HTTP/1.1 и обычному HTTP/2.

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

Поэтому я хочу найти инструмент для нагрузочного тестирования, который может:

  1. поддерживать все эти протоколы;
  2. ожидать указанную часть (приемлемо, если нужно указать номер, но лучше по содержимому).

Он должен работать на Linux (и под WSL), не ограничиваясь графическим интерфейсом или веб-интерфейсом; в идеале, чтобы его можно было запускать в CI.

k6 и Gatling не поддерживают h2c (хотя ссылка на Gatling из 2020 года, я не смог найти более свежую информацию).

h2load и Vegeta поддерживают h2c, но, похоже, не могут выполнить второе.

Может быть, Apache JMeter?

Он не поддерживает HTTP2 из коробки, но есть HTTP2 плагин для JMeter, который можно установить с помощью JMeter Plugins Manager.

Вы можете “ожидать” конкретный фрейм, используя либо While Controller, либо JSR223 PostProcessor.

Ответ или решение

Скриптируемые инструменты нагрузочного тестирования с поддержкой HTTP/2 Cleartext

Разработка API с поддержкой нескольких протоколов сети может стать серьезной задачей, особенно если необходимо учитывать специфические особенности, такие как HTTP/2 Cleartext (h2c). В вашем случае важно выбрать инструмент для нагрузочного тестирования, который будет поддерживать все необходимые протоколы и обеспечивать функционал для обработки ответов с разбиением на части. Рассмотрим возможные решения, которые соответствуют вашим требованиям.

1. Apache JMeter

JMeter – это мощный инструмент для нагрузочного тестирования, который изначально не поддерживает HTTP/2, но существует плагин HTTP2 Plugin for JMeter, позволяющий ему работать с этой технологией. Вы сможете установить плагин через JMeter Plugins Manager.

Преимущества:

  • Поддерживает все необходимые протоколы: HTTP/1.1, HTTP/2 и HTTP/2 Cleartext.
  • Гибкость в настройках и возможность использования скриптовых контроллеров, таких как While Controller и JSR223 PostProcessor, что позволяет ожидать определенные чанки ответа.
  • Поддержка выполнения в различных окружениях, включая CI/CD.

Недостатки:

  • Необходимость дополнительной настройки для работы с HTTP/2.
  • Требует хорошего понимания работы JMeter и его архитектуры.

2. h2load

Инструмент h2load может быть использован для нагрузки вашего API и поддерживает h2c. Однако h2load не обладает функциональностью ожидания определенных чанков ответов, что, возможно, не соответствует вашим требованиям.

Преимущества:

  • Легкий в использовании и подходит для базового нагрузочного тестирования.
  • Поддержка HTTP/2 Cleartext.

Недостатки:

  • Нет возможности ждать определенные чанки ответа.

3. Vegeta

Vegeta – еще один инструмент, который поддерживает h2c, но, как и h2load, не предоставляет функционал для ожидания специфического контента в ответах.

Преимущества:

  • Простота в использовании.
  • Хорошо подходит для простых нагрузочных тестов.

Недостатки:

  • Ограниченная функциональность по ожиданию ответов с разбиением на части.

Рекомендации

На основе вышеизложенных инструментов, Apache JMeter представляется оптимальным выбором для ваших потребностей. Его возможность использовать плагин для HTTP/2 и мощные инструменты для управления потоком тестов сделают его лучшим выбором для нагрузочного тестирования вашего API, функционирующего как на HTTP/1.1, так и на HTTP/2 Cleartext.

Заключение

Выбор инструмента для нагрузочного тестирования API — это не просто вопрос предпочтений, а стратегический шаг, который может повлиять на производительность и стабильность вашего приложения. Учитывая вашу задачу, мы рекомендуем внимательно рассмотреть возможности Apache JMeter в сочетании с поддержкой его расширений. Это поможет вам обеспечить не только функциональность, но и высокую эффективность тестирования вашего API.

Оцените материал
Добавить комментарий

Капча загружается...