2010-02-22 2 views
2

С нескольких дней назад сервер SQL Server (Microsoft SQL Server 2005), поддерживающий наш сайт, запускал время от времени. Это происходит в кажущиеся случайными временами примерно каждый час или два. Обычно требуется около 10 минут, в течение которых мы видим сотни запрограммированных запросов. При нормальных обстоятельствах большинство наших запросов занимают менее 50 мс. Исключение составляет запрос, который занимает значительную долю секунды.Временные таймауты SQL

Я эффективно убил день, пытаясь выяснить хоть что-то, не имея никакого реального прогресса. Обычно загрузка сервера составляет около 10-20%, и когда время ожидания происходит, мы не видим увеличения загрузки ЦП. Кроме того, во время тайм-аутов ничего особенного не происходит; нет переусердствующего веб-искателя, нет тяжелых фоновых задач, нет увеличения сетевого трафика, увеличения количества подключений и т. д. Просто все выглядит как обычно.

Не добившись какого-либо прогресса, мы решили перезапустить его (и установить последний SP, так как мы были в нем), который, похоже, устранил проблему. Прошло уже шесть часов без каких-либо инцидентов. Кроме того, загрузка процессора снизилась до 10%.

Похоже, что если SQL-сервер «ухудшился» сверхурочно. Возможно, какая-то внутренняя структура (некоторый кэш или статистика) вышла из формы и вызвала случайные проблемы. У меня нет другого объяснения.

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

Имеет ли кто-либо подобный опыт? Я не гуру SQL Server. Любые предложения приветствуются.

+0

Я только что проголосовал, чтобы переместить это ServerFault - хороший DBA или администратор сервера должен быть в состоянии помочь с этим. Тем не менее, вы посмотрели на транзакции, выполняемые на сервере (любые открытые сериализованные транзакции?), Вы использовали sp_lock и sp_who для просмотра блокировок и процессов, чтобы убедиться, что это проблема блокировки? И вы оставили профайлер, запущенный в системе, чтобы дать больше информации, когда проблема повторится? –

+0

В сценарии я написал в основном мониторы sys.dm_exec_requests и sys.dm_exec_sessions и ищет блокирующие запросы. Однако, только после того, как мы перезапустили сервер, похоже, что это не повторится. Раньше я пытался использовать Activity Monitor, но он был слишком медленным и громоздким. –

ответ

2

так как все выглядело нормально: процессор, ничего особенного не происходит, нет переусердствующего веб-искателя, нет тяжелых фоновых задач, нет увеличенного сетевого трафика, увеличения количества подключений и т. Д. Я бы посмотрел на состояние блокировки \ блокирования \ гонки. Используйте это, чтобы увидеть, что (если что-нибудь), блокируется, когда тайм-аут происходит:

How to find out what SQL queries are being blocked and what's blocking them?

Смежные вопросы