Никогда не запускайте запросы без таймаута. Один единственный злонамеренный запрос или всплеск нагрузки могут привести к зависаниям или простоям приложения без них. Давайте подумаем, почему. Представьте случай, когда в наше приложение случайно попадает долгий запрос. База данных обычно обрабатывает только краткосрочные запросы (10 мс или меньше), и вдруг у нас появляется новый запрос, который занимает 1000 мс на выполнение. Это не только будет потреблять ресурсы, но и увеличит количество одновременных транзакций. Мы либо достигнем пределов соединений, пределов транзакций, либо используем 100% процессора / IOPS базы данных. Теперь рассмотрим ту же ситуацию, но мы устанавливаем таймаут в 250 мс для каждой транзакции (на стороне базы данных), с логикой повторных попыток с экспоненциальным увеличением времени ожидания + джиттером (на стороне приложения). Мы теперь ограничили радиус поражения любого отдельного запроса. Долгие запросы будут завершены, а логика увеличения времени ожидания минимизирует риск "громовых стад". Мониторя эти таймауты, мы можем быстро идентифицировать проблемный запрос и откатить изменения.