Ожидаемая операция ожидания. ASP

Я создал внутренний веб-сайт для нашей компании. Он работает гладко в течение нескольких месяцев, а затем я сделал большое обновление из-за пользовательских предложений. Когда я бегу в прямом эфире, он работает нормально. Затем внезапно один из моих пользователей из Японии отправил мне операцию "Ожидание". ошибка. Когда я проверяю доступ к определенной ссылке, она работает нормально для меня и некоторых других, которых я прошу проверить, имеют ли они доступ к этой странице. Я уже обновляю httpRuntime executeTimeout, но все равно не повезло. Это ошибка при подключении к базе данных? Если я увеличу тайм-аут в соединении с базой данных, это устранит проблему?

Ответ 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 "