advanced
Нагрузочное тестирование
Моделируйте трафик, ramp-up, steady load, spike, пределы отказа и bottlenecks до опоры на допущения о ёмкости.
Нагрузочное тестирование моделирует трафик против системы, чтобы найти пределы ёмкости, точки насыщения и режимы отказа до production. Инструменты: k6, Gatling, Locust, JMeter.
| Фаза | Цель | |------|------| | Smoke | Мало VU — скрипт работает | | Load | Ожидаемый steady traffic | | Stress | Рост до ошибок или нарушения SLA | | Spike | Резкий скачок — autoscale/backpressure | | Soak | Часы — утечки и деградация |
// k6 sketch
export const options = { stages: [
{ duration: '2m', target: 100 },
{ duration: '5m', target: 100 },
{ duration: '2m', target: 0 },
]};
Задайте **критерии успеха**: p95 latency, error rate, queue lag, CPU. Реалистичные payload и think time. Тестируйте близко к production topology — изолированный microservice пропускает integration bottlenecks.
На интервью: open vs closed workload; coordinated omission в tools; зачем soak; безопасные среды load test.
Типовые ошибки: prod без изоляции; think time 0ms; игнор rate limits third-party.
Компромисс — уверенность в ёмкости против стоимости и риска для shared environments.
Чеклист:
- Реалистичные user journeys в скрипте.
- Плавный ramp; метрики насыщения.
- Не load-test prod без safeguards.
- Задокументируйте найденный max sustainable RPS.