Skip to content
← Все статьи

Метрики производительности API

Зачем измерять производительность API

API документацию — основа современных веб-приложений. Медленный API означает медленный сайт, плохой пользовательский опыт и потерю клиентов. По данным Amazon, каждые 100 мс задержки снижают продажи на 1%. Для API, обслуживающих фронтенд, это критично.

Без метрик вы не знаете, насколько быстро работает API, где узкие места и когда начинается деградация.

Ключевые метрики

Latency (задержка)

Время от отправки запроса до получения ответа. Главная метрика пользовательского опыта.

Как измерять:

  • Среднее значение (average) — обманчиво. Может скрывать проблемы: если 99 запросов по 100 мс и 1 по 10 секунд, среднее — 199 мс
  • Медиана (P50) — 50% запросов быстрее этого значения. Характеризует типичный опыт
  • P95/P99 — 95%/99% запросов быстрее. Показывает «хвост» распределения — опыт худших запросов
  • P99.9 — для high-traffic API, критично для SLA

Целевые значения:

  • P50: менее 100 мс для внутренних API, менее 200 мс для публичных
  • P95: менее 500 мс
  • P99: менее 1 секунды

Throughput (пропускная способность)

Количество запросов, обрабатываемых в единицу времени (RPS — Requests Per Second). Показывает ёмкость системы.

Мониторьте throughput в связке с latency. Увеличение RPS часто вызывает рост latency — важно знать точку, где начинается деградация.

Error Rate (частота ошибок)

Процент запросов, завершившихся ошибкой (HTTP 4xx, 5xx). Цель — менее 0.1% для 5xx ошибок.

Различайте:

  • 4xx — ошибки клиента (валидация, авторизация). Не всегда проблема сервера
  • 5xx — ошибки сервера. Всегда требуют внимания
  • Timeout — запрос не получил ответа. Часто самая вредная ошибка

Availability (доступность)

Процент времени, когда API отвечает корректно. SLA обычно определяет целевой uptime:

  • 99.9% — не более 8.7 часов простоя в год
  • 99.99% — не более 52.5 минут в год

Saturation (насыщение)

Насколько загружены ресурсы: CPU, память, соединения с БД, дисковый I/O. Когда saturation приближается к 100%, latency резко растёт.

Методология RED

RED (Rate, Errors, Duration) — простая методология для мониторинг сайтов микросервисов:

  • Rate — количество запросов в секунду
  • Errors — количество неудачных запросов в секунду
  • Duration — распределение времени ответа (гистограмма)

Эти три метрики покрывают 80% потребностей в мониторинге API.

Оптимизация производительности API

Запросы к базе данных

  • Используйте индексы для частых запросов
  • Избегайте N+1 проблемы (1 запрос для списка + N запросов для деталей)
  • Кэшируйте результаты часто повторяющихся запросов в Redis
  • Используйте пагинацию вместо загрузки всех записей

Кэширование

  • Redis/Memcached для горячих данных
  • HTTP кэширование (Cache-Control, ETag) для публичных эндпоинтов
  • Мемоизация вычислений внутри запроса

Компрессия

Включите gzip/brotli для JSON-ответов. Для большого JSON-ответа сжатие может уменьшить размер на 80-90%.

Пагинация и фильтрация

Не возвращайте 10,000 записей одним ответом. Используйте cursor-based или offset-based пагинацию. Позвольте клиентам фильтровать данные на стороне сервера.

Мониторинг и инструменты

Используйте HTTP-чекер Enterno.io для проверки времени отклика и заголовков ваших API-эндпоинтов. Настройте мониторинг uptime для ключевых эндпоинтов, чтобы получать уведомления при деградации.

Итоги

Мониторьте latency (percentiles, не averages), throughput, error rate и saturation. Используйте методологию RED для микросервисов. Оптимизируйте запросы к БД, кэшируйте горячие данные, сжимайте ответы. Устанавливайте SLA и мониторьте их выполнение.

Проверьте ваш сайт прямо сейчас

Проверить скорость сайта →
Другие статьи: Производительность
Производительность
INP в Core Web Vitals: новая метрика 2026
15.06.2026 · 40 просм.
Производительность
Оптимизация доставки контента: стратегии CDN и граничные вычисления
16.03.2026 · 124 просм.
Производительность
Gzip vs Brotli: сравнение веб-компрессии
16.03.2026 · 149 просм.
Производительность
Resource Hints: Prefetch, Preload, Preconnect и DNS-Prefetch
16.03.2026 · 123 просм.