Тайм-аут соединения истек Когда много запросов одновременно - PullRequest
0 голосов
/ 31 января 2019

У меня есть приложение .Net (REST API), которое обращается к базе данных SQL Server.Иногда, когда есть много запросов API, я получаю исключение Тайм-аут соединения, из-за которого все запросы терпят неудачу.Это не всегда так и происходит только тогда, когда на сервер одновременно попадает много запросов.

Сведения об исключении:

System.Data.SqlClient.SqlException (0x80131904): Время ожидания соединения истекло.Период ожидания истек при попытке использовать подтверждение рукопожатия перед входом в систему.Это может быть связано с тем, что рукопожатие перед входом в систему не удалось или сервер не смог ответить вовремя.Продолжительность попытки подключения к этому серверу составила - [Pre-Login] initialization = 4;квитирование = 14992;---> System.ComponentModel.Win32Exception (0x80004005): Тайм-аут операции ожидания.

Любая помощь здесь будет высоко оценена.

1 Ответ

0 голосов
/ 31 января 2019

Из этого (с голосованием) комментария

в этом случае может быть несколько причин:
1. Вы используете SQL Server Express
2. Мертвая блокировка между вашими запросами
3. Запросы выполняются дольше стандартного тайм-аута - 30 секунд

Сначала следует исключить N1, так как серверная версия не имеет ничего общего с тайм-аутом соединения, навязанным client

Затем исключите N2, так как взаимоблокировки автоматически разрешаются монитором взаимоблокировок сервера, который контролирует взаимные блокировки каждые 5 секунд или даже реже, когда частые взаимоблокировки.

Чем исключить N3, поскольку connection timeout не имеет ничего общего с execution timeout,И ваше время ожидания составляет CONNECTION время ожидания.

Вы должны увеличить connection timeout на своем клиенте или устранить неполадки на сервере, что происходит там, когда ваш сервер перестает отвечать на запросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...