Вопрос с собеседования · Spring

Почему у каждого вызова внешнего сервиса должен быть таймаут?

JuniorУстойчивость и наблюдаемостьSpring
Ещё спрашивают так:
  • Что будет без таймаута на HTTP-вызов?
Коротко

Без ограничения ожидание держит поток и соединение бесконечно: зависшая зависимость занимает все потоки, и ваш сервис перестаёт отвечать — чужая медлительность становится вашим отказом.

  • Таймаут соединения и таймаут чтения — отдельно
  • По умолчанию у многих клиентов таймаута нет или он огромный
  • Значение — по реальной задержке зависимости

А ещё Вместе с таймаутом — повторы с отсрочкой и circuit breaker

Подробно

Отказ редко выглядит как быстрая ошибка — гораздо чаще зависимость начинает отвечать медленно. Каждый такой вызов занимает поток и соединение из пула; когда пул исчерпан, сервис перестаёт обслуживать даже те запросы, которым эта зависимость не нужна. Так работает каскадный отказ. Разумно задавать отдельно короткий таймаут на установку соединения и таймаут на чтение ответа, исходя из реального профиля задержек, и следить, чтобы он укладывался в бюджет времени вызывающего.

Что хотят услышать

  • Последствия отсутствия таймаута.

Частые ошибки

  • Полагаться на умолчания HTTP-клиента, где таймаут может отсутствовать.
  • Ставить таймаут больше, чем готов ждать вызывающий.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Иначе внешний сервис не сможет обработать запрос и вернёт ошибку соединения клиенту
  • ✓Иначе зависшие вызовы бесконечно держат потоки и соединения, и сервис падает сам
  • ✗Таймаут ускоряет ответ внешнего сервиса
  • ✗Таймаут нужен только при обращении к базе данных

Что спросят дальше

  • Что такое бюджет времени и как он убывает по цепочке?
  • Как таймауты сочетаются с повторами?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования