Ответ
Высоконагруженность системы — это состояние, когда она приближается к пределам своей производительности или доступности. Я определяю ее по комплексу метрик, выходящих за установленные пороги (SLA/SLO).
Ключевые признаки:
-
Деградация времени отклика (Latency):
- Процентили (p95, p99) времени ответа постоянно превышают целевые значения (например, p95 > 500 мс для API).
- Рост задержки в очередях сообщений (Kafka, RabbitMQ).
-
Рост уровня ошибок:
- Увеличение доли HTTP-ответов
5xx(ошибки сервера) и4xx(например,429 Too Many Requests). - Рост таймаутов и ошибок подключения к базам данных, кэшам (Redis) или внешним сервисам.
- Увеличение доли HTTP-ответов
-
Насыщение критических ресурсов:
- CPU: стабильная загрузка ядер выше 70-80%.
- Память: высокое использование оперативной памяти, активный своп (swap), рост числа OOM-киллов.
- Диск I/O: время ожидания операций ввода-вывода (
await) растет, утилизация диска приближается к 100%. - Сеть: исчерпание пропускной способности или лимита соединений.
-
Автомасштабирование не справляется: Количество инстансов в Auto Scaling Group постоянно на максимуме, но метрики нагрузки не снижаются.
Пример алерта в Prometheus для CPU:
- alert: HighNodeCPU
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 75
for: 10m
labels:
severity: warning
annotations:
summary: "Высокая загрузка CPU на ноде {{ $labels.instance }}"
Проактивные действия: При появлении таких признаков мы сразу смотрим на графы в Grafana (цепочку зависимостей), логи (ELK Stack) и начинаем искать "узкое место" (bottleneck) — будь то база данных, конкретный микросервис или сетевая инфраструктура.