Как оценить уровень нагрузки на backend-сервис?

«Как оценить уровень нагрузки на backend-сервис?» — вопрос из категории Архитектура, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Уровень нагрузки оценивается по метрикам, которые делятся на несколько категорий:

1. Метрики трафика и запросов:

  • RPS/QPS: Количество запросов в секунду.
  • Объём данных: Входящий и исходящий трафик (МБ/с).

2. Метрики производительности сервера:

  • Загрузка CPU: >70-80% — высокая нагрузка.
  • Использование памяти (RAM): Учитывать heap и off-heap.
  • Дисковая I/O: Операции чтения/записи и latency.
  • Использование сети.

3. Метрики приложения и бизнес-логики:

  • Latency (время отклика): P50, P95, P99 перцентили.
  • Error Rate: Процент ошибок (5xx, 4xx).
  • Утилизация пулов соединений (БД, HTTP-клиенты).
  • Длина очереди задач (например, в Kafka или ThreadPool).

4. Метрики зависимостей (БД, кэш, внешние API):

  • Время отклика внешних вызовов.
  • Количество активных соединений с БД.

Практический пример оценки:

Высокая нагрузка:
- RPS > 1000
- P95 latency > 1 секунды
- CPU usage > 75%
- Error rate > 1%

Инструменты: Мониторинг через Prometheus/Grafana, APM (Jaeger, Zipkin), логирование structured logs.