Тайм-аут SQL Server вызван сбоем w3wp.exe

У меня есть постоянная проблема с моим веб-сайтом, где, по-видимому, происходит сбой W3wp.exe, и, в свою очередь, любой, кто пытается подключиться к сайту, получит ошибку тайм-аута SQL-сервера.

Ошибка в этом...

System.Data.SqlClient.SqlException: истекло время ожидания. Время ожидания истекло до завершения операции или сервер не отвечает.

На самом деле происходит, когда это происходит, загрузка ЦП на сервере максимально достигает 100% и остается там. В течение этого времени, если я попытаюсь подключиться к домашней странице, сайт будет загружаться, а затем истечет время ожидания. Это также тот случай, когда я пытаюсь подключиться к базе данных через студию управления. Я получаю вышеуказанную ошибку тайм-аута SQL от ELMAH, когда он посылает мне сообщения об исключениях. Когда я делаю iisreset, я снова могу подключиться к серверу SQL, и загрузка ЦП немедленно падает.

Теперь я уже опубликовал несколько вопросов о проблеме, связанной с исключением времени ожидания SQL. Так что плохо перечислю, что я сделал и что я использую...

• Я использую Linq to SQL. • SQLCacheDependancy. • IIS 7.5 и SQL Server 2008 R2. • Утилизация всех предметов. • Вызов данных Linte to SQL dataContext всегда заключен в ключевое слово USING.

Эти ошибки тайм-аута возникают нечасто, возможно, раз в 2 дня, но сегодня, когда я встал, в моем почтовом ящике было много исключений по тайм-ауту, указывающих, что одна произошла за одну ночь.

Еще одна странность заключается в том, что когда, например, это произошло вчера вечером, было около 4 часов утра, когда я попробовал это сегодня утром в 8 часов утра, сайт работал нормально, поэтому мне кажется, что сверхурочно W3wp.exe, SQL-сервер или оба сервера могут либо перезапустить или перезагрузить себя.

Кто-нибудь может увидеть, что может быть причиной такого поведения? или укажи мне правильное направление в чем может быть причина? или, возможно, даже возможное решение?

Любая помощь ценится

Truegilly

1 ответ

Я предполагаю, что тайм-аут из-за высокого пика ЦП, а не наоборот. Если ваш IIS и SQL находятся на одной машине, попробуйте выяснить процесс (из диспетчера задач), который загружает процессор.

Если это веб-сервер, настройте счетчики выполнения, особенно те, которые связаны с сборкой мусора.NET, и посмотрите, как часто он выполняется. Также проверьте размер объекта Gen2. Вам придется собирать эти данные, начиная с момента их нормальной работы, до максимальной загрузки ЦП, и сравнивать то, что "растет" в счетчиках. Проверьте, включено ли отслеживание объектов в контексте данных, а также как долго вы используете (datacontext){ ... }.

Если это sqlserver, который держит процессор, то попробуйте использовать следующую статью Microsoft для анализа проблемы.

Другие вопросы по тегам