С тех пор, как несколько дней назад сервер SQL (Microsoft SQL Server 2005), поддерживающий наш сайт, время от времени запускался по таймауту. Это происходит в случайное время примерно каждый час или два. Обычно это занимает около 10 минут, в течение которых мы видим сотни запросов, рассчитанных по времени. При нормальных обстоятельствах большинство наших запросов занимает менее 50 мс. Исключением является запрос, занимающий значительную долю секунды.
Я фактически убил день, пытаясь выяснить хоть что-то без какого-либо реального прогресса. Обычно нагрузка на сервер составляет около 10-20%, и когда происходят тайм-ауты, мы не видим увеличения загрузки процессора. Кроме того, во время тайм-аута ничего особенного не происходит; нет чрезмерного веб-сканера, нет сложных фоновых задач, нет увеличенного сетевого трафика, нет увеличенного числа подключений и т. д. Просто все выглядит как обычно.
Не добившись никакого прогресса, мы решили перезапустить его (и установить последнюю версию SP, так как мы были в нем), что, похоже, решило проблему. Уже прошло более шести часов без каких-либо инцидентов. Кроме того, загрузка процессора снизилась до 10%.
Похоже, что сервер SQL "испортился" со временем. Возможно, какая-то внутренняя структура (некоторый кеш или статистика) обрела форму и порой вызывала проблемы. У меня нет другого объяснения.
Единственное, что я заметил, когда наблюдал за сервером (и мне посчастливилось однажды присутствовать, когда происходили тайм-ауты), я увидел несколько длительных запросов, ожидающих на CXPACKET. Но я узнал, что это, скорее всего, просто следствие какой-то другой проблемы. Я написал скрипт для мониторинга запросов SQL, и, надеюсь, в следующий раз, когда это произойдет, у меня будет больше информации.
Кто-нибудь имел подобный опыт? Я не гуру SQL Server. Любые предложения приветствуются.