Ответ вслух Senior Probes и ресурсы обновлено

Как выставить requests и limits

Вопрос

Как ты определишь requests и limits для нового сервиса и почему?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Начинаю с измерений: нагрузочный тест или метрики с похожего сервиса, смотрю p95 и p99 потребления CPU и памяти, а не среднее.

Что должно прозвучать в ответе

  • Измерить реальное потребление под нагрузкой: p95/p99 CPU и памяти по метрикам или нагрузочному тесту

  • Память: requests = limits с запасом над пиком, иначе OOMKilled или вытеснение

  • CPU: requests по типичному потреблению; лимит либо не ставить, либо с запасом, учитывая троттлинг

  • Лимиты рантайма согласовать с лимитом контейнера: куча JVM, Node, `GOMEMLIMIT`, число потоков

  • QoS-класс: критичным сервисам Guaranteed по памяти

  • Пересматривать по метрикам, VPA в режиме рекомендаций, LimitRange для значений по умолчанию

Что могут спросить следом

  • Почему некоторые не ставят CPU-лимиты?
  • Как связаны requests и HPA?

Разбор

Начинаю с измерений: нагрузочный тест или метрики с похожего сервиса, смотрю p95 и p99 потребления CPU и памяти, а не среднее. Память для меня несжимаемый ресурс, поэтому ставлю requests равным limits с запасом над пиком: так планировщик не поставит под на узел, где памяти не хватит, и поведение предсказуемо, а под не станет первым кандидатом на вытеснение. CPU requests ставлю по типичному потреблению, от них зависит и планирование, и доля процессора при конкуренции. С лимитом CPU осторожно: он вызывает троттлинг, который бьёт по задержкам даже при невысокой средней загрузке, поэтому многие ставят его с большим запасом или не ставят вовсе, если узлы не делят критичные нагрузки. Согласую рантайм: куча JVM через MaxRAMPercentage, --max-old-space-size для Node, GOMEMLIMIT для Go, и число потоков под лимит CPU. HPA считает процент от requests, так что заниженные requests дадут лишнее масштабирование. Дальше пересматриваю по метрикам, VPA в режиме рекомендаций помогает, а LimitRange в namespace задаёт разумные значения по умолчанию.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.