Прерывистые тайм-ауты SQL - PullRequest
       6

Прерывистые тайм-ауты SQL

2 голосов
/ 23 февраля 2010

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

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

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

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

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

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

1 Ответ

2 голосов
/ 23 февраля 2010

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

Как узнать, какие SQL-запросы блокируются и что их блокирует?

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