Вступить в клуб →
лёгкаявопросREST API и интеграции

GET /api/orders отдаёт все 400 000 заказов

Эндпоинт GET /api/orders возвращает весь список заказов одним ответом. За год заказов накопилось 400 000, ответ стал весить десятки мегабайт, p95 вырос до нескольких секунд, а php-fpm периодически падает по памяти.

Как решают эту задачу в REST API?

  • Поднять memory_limit и max_execution_time в php-fpm под размер выдачи и увеличить таймауты в nginx, чтобы ответ успевал дойти до клиента
  • Отдавать тот же полный список, но класть готовый ответ целиком в Redis на 5 минут, чтобы база не пересчитывала выборку на каждый запрос
  • Ввести обязательный лимит со значением по умолчанию и верхней границей, возвращать курсор или номер страницы и зафиксировать это в OpenAPI-контракте
  • Оставить эндпоинт как есть и договориться с потребителями запрашивать его реже и в ночные часы, когда нагрузка на систему минимальна

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела