Skip to content
7 / 10

Тайм-ауты при работе с базой: какие бывают и как их согласовать?

Тайм-аутов несколько, и они должны быть согласованы по возрастанию: тайм-аут установки соединения (секунды) < тайм-аут ожидания свободного соединения в пуле < statement_timeout (предел на один запрос на стороне базы) < тайм-аут HTTP-обработчика < клиентский тайм-аут. Если внутренний предел больше внешнего, клиент отваливается, а запрос продолжает жить и занимать ресурсы — самый частый источник каскадной перегрузки. statement_timeout задают на уровне роли или транзакции: он прерывает выполнение на стороне сервера, а не только в драйвере, и это принципиально — отмена на клиенте без отмены на сервере оставляет запрос работать. Дополнительно ставят idle_in_transaction_session_timeout (обрыв забытых транзакций) и lock_timeout (не ждать блокировку бесконечно). Для фоновых задач и аналитики значения задают отдельно, а не поднимают общие.

Тайм-ауты при работе с базой: какие бывают и как их согласовать? | JScriptiser