Доклад о том, как строить нагрузочное тестирование high-load систем, которому можно доверять. На примере Gatling разберем путь от методологии FindMax / MaxConfirm / Stress до архитектуры генератора нагрузки.
Главная идея: target RPS в simulation не равен delivered RPS на SUT. При высоком RPS узким местом может стать не тестируемая система, а сам генератор нагрузки: feeder, production-like подготовка данных, криптография, HTTP protocol, connection pool, CPU, сеть и backpressure.
В докладе будет обезличенный технический кейс: production-like feeder с Vault/JWT/RSA/AES-GCM не успевал готовить данные на горячем пути сценария, из-за чего SUT фактически недополучала нагрузку. Покажу, как эту проблему решает producer-consumer подход, многопоточная подготовка данных и BlockingQueue.
Также разберем transport/request execution path: keep-alive, connection reuse, maxConnectionsPerHost, локальные порты и другие настройки, которые влияют на delivered RPS.
Слушатели уйдут с практической моделью: как проектировать load generation path, чтобы не тестировать генератор нагрузки вместо SUT.