Назад | Перейти на главную страницу

Когда менять максимальное количество рабочих потоков SQL 2005 на 64-битном сервере

Серверная среда:

РЕДАКТИРОВАТЬ: Я также должен отметить, что max_workers_count в настоящее время имеет значение по умолчанию 512 для 4-процессорного блока.

Мы сталкиваемся с взаимоблокировками пула потоков, которые, я уверен, связаны с параллелизмом. Графики взаимоблокировки почти идентичны тем, что в сообщении Барта Дункана о Взаимоблокировки параллельных потоков внутри запроса, и я не вижу упоминания о ресурсах блокировки в выходных данных тупика, как упоминалось в разделе «Предостережения» его сообщения, что заставляет меня думать, что это параллелизм.

Я нахожусь в процессе настройки запросов, которые кажутся связанными с ними, но это займет некоторое время (прочтите «пару недель»). А пока мне интересно, будет ли увеличение пула потоков разумным или нет в качестве временного обходного пути.

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

(Кстати, переход на SP3 сейчас не вариант из-за Эта проблема)

Увеличение числа рабочих мест вообще не повлияет на ваш сценарий тупика, если он связан с параллелизмом, как в сообщении в блоге Барта Дункана. Если это действительно параллельная взаимоблокировка, ваше быстрое исправление - это OPTION (MAXDOP n) ошибочного запроса, пока вы работаете над его настройкой, и ограничение его до точки, где взаимоблокировка прекращается. Возможно, вам не обязательно возвращаться к DOP 1, я видел, как DOP 4 исправлял это раньше.

Еще одна вещь, на которую следует обратить внимание, - если на сервере включена гиперпоточность, отключив ее. SQLOS создает пользовательский планировщик для каждого логического ЦП, доступного для SQL Server. С гиперпоточностью вы получаете 8 логических процессоров, что означает, что у вас есть 8 пользовательских планировщиков. Ваш запрос может выполняться на DOP 8, когда у вас действительно 4 процессора, что может привести к вашей проблеме. Вы можете определить, является ли это частью проблемы, посчитав количество узлов процесса в XML-графе взаимоблокировки. Если у вас 8 узлов процесса, попробуйте отключить гиперпоточность на сервере и посмотреть, решит ли это проблему.

См. Эту запись в электронной документации, чтобы узнать, как это изменить: Параметр максимального числа рабочих потоков а также см. обсуждение увеличения максимального числа рабочих потоков с Старый блог Кена Хендерсона. Я бы очень осторожно стал делать это, если в этом нет крайней необходимости.

Надеюсь это поможет!