Я создал внутренний веб-сайт для нашей компании. Он работает гладко в течение нескольких месяцев, а затем я сделал большое обновление из-за пользовательских предложений. Когда я бегу в прямом эфире, он работает нормально. Затем внезапно один из моих пользователей из Японии отправил мне операцию "Ожидание". ошибка. Когда я проверяю доступ к определенной ссылке, она работает нормально для меня и некоторых других, которых я прошу проверить, имеют ли они доступ к этой странице. Я уже обновляю httpRuntime executeTimeout, но все равно не повезло. Это ошибка при подключении к базе данных? Если я увеличу тайм-аут в соединении с базой данных, это устранит проблему?
Ожидаемая операция ожидания. ASP
Ответ 1
Если вы обнаружили точную ошибку "Ожидание ожидания", то, скорее всего, у вас есть вызов базы данных, который занял больше времени, чем ожидалось. Это может быть связано с любым количеством вещей:
- Проблема переходных сетей
- Высокая загрузка SQL-сервера
- Проблема с SAN, RAID или устройством хранения
- Тупик или другая форма многопроцессорной конкуренции
У вас недостаточно информации для устранения неполадок. То, как я справился бы с этим, - это проверить наличие других проблем и посмотреть, есть ли шаблон, например. если проблема возникает в определенное время суток.
Конечно, увеличение тайм-аута - неплохая идея (если она в настоящее время установлена довольно низко) и может решить проблему сама по себе.
Ответ 2
Не забудьте увеличить время ожидания соединения и таймаут команды:
SqlConnection(@"Data Source=SQLSERVER;Initial Catalog=MYCATALOG;Integrated Security=True;Connection Timeout=1000");//huge timeout
а затем:
com.CommandTimeout = 950;//or whatever
Ответ 3
Я исправил эту ошибку, найдя точную процедуру в средстве просмотра событий, где происходил тайм-аут.
Подключился к той же базе данных в SSMS и запустил:
exec sp_recompile 'Procedure name'
Это показало ниже сообщение:
Объект "Имя процедуры" был успешно помечен для перекомпиляции.
Ответ 4
Это также может быть другой проблемой. Например, если вы выполняете много запросов в течение одного открытого соединения, и оно превышает время жизни соединения. Затем вам нужно установить свойство Connection Lifetime
в строке подключения. Вот описание:
Когда соединение возвращается в пул, время его создания сравнивается с текущим временем, и соединение разрывается, если этот промежуток времени (в секундах) превышает значение, указанное в жизни соединения. Это полезно в кластерных конфигурациях для принудительного распределения нагрузки между работающим сервером и сервером, только что подключенным к сети. Нулевое значение (0) приводит к тому, что для объединенных соединений будет установлен максимальный тайм-аут соединения.
Ответ 5
В файле web.config перейдите в строку соединений и добавьте следующее:; Integrated Security = True; Connect Timeout = 120 "