Серверная среда:
РЕДАКТИРОВАТЬ: Я также должен отметить, что max_workers_count в настоящее время имеет значение по умолчанию 512 для 4-процессорного блока.
Мы сталкиваемся с взаимоблокировками пула потоков, которые, я уверен, связаны с параллелизмом. Графики взаимоблокировки почти идентичны тем, что в сообщении Барта Дункана о Взаимоблокировки параллельных потоков внутри запроса, и я не вижу упоминания о ресурсах блокировки в выходных данных тупика, как упоминалось в разделе «Предостережения» его сообщения, что заставляет меня думать, что это параллелизм.
Я нахожусь в процессе настройки запросов, которые кажутся связанными с ними, но это займет некоторое время (прочтите «пару недель»). А пока мне интересно, будет ли увеличение пула потоков разумным или нет в качестве временного обходного пути.
Какие-нибудь SQL-спортсмены хотят помочь парню?
(Кстати, переход на SP3 сейчас не вариант из-за Эта проблема)
Увеличение числа рабочих мест вообще не повлияет на ваш сценарий тупика, если он связан с параллелизмом, как в сообщении в блоге Барта Дункана. Если это действительно параллельная взаимоблокировка, ваше быстрое исправление - это OPTION (MAXDOP n) ошибочного запроса, пока вы работаете над его настройкой, и ограничение его до точки, где взаимоблокировка прекращается. Возможно, вам не обязательно возвращаться к DOP 1, я видел, как DOP 4 исправлял это раньше.
Еще одна вещь, на которую следует обратить внимание, - если на сервере включена гиперпоточность, отключив ее. SQLOS создает пользовательский планировщик для каждого логического ЦП, доступного для SQL Server. С гиперпоточностью вы получаете 8 логических процессоров, что означает, что у вас есть 8 пользовательских планировщиков. Ваш запрос может выполняться на DOP 8, когда у вас действительно 4 процессора, что может привести к вашей проблеме. Вы можете определить, является ли это частью проблемы, посчитав количество узлов процесса в XML-графе взаимоблокировки. Если у вас 8 узлов процесса, попробуйте отключить гиперпоточность на сервере и посмотреть, решит ли это проблему.
См. Эту запись в электронной документации, чтобы узнать, как это изменить: Параметр максимального числа рабочих потоков а также см. обсуждение увеличения максимального числа рабочих потоков с Старый блог Кена Хендерсона. Я бы очень осторожно стал делать это, если в этом нет крайней необходимости.
Надеюсь это поможет!