Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запрос в состоянии Suspended, как выяснить чего он ждёт?  [new]
Владимир Меньшиков
Member

Откуда: Санкт-Петербург
Сообщений: 68
Добрый день.

Есть масса записей в для одного процесса, правда непонятно почему их так много у нас максимум 24 ядра на sql сервере (2 процессора по 6 ядер с Hyper-threading), но потоков гораздо больше, я насчитал около 40.
Причем часть из них в SUSPENDED - ожидание, другая в RUNNABLE - готов к запуску, но ни одного в статусе RUNNING - выполнение.

Картинка с другого сайта.

Как понять кого ждут потоки со статусом SUSPENDED?
6 сен 16, 13:34    [19632684]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в состоянии Suspended, как выяснить чего он ждёт?  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Мне так кажется у Вас проблема с CXPACKET

https://www.brentozar.com/archive/2013/08/what-is-the-cxpacket-wait-type-and-how-do-you-reduce-it/
6 сен 16, 13:45    [19632746]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в состоянии Suspended, как выяснить чего он ждёт?  [new]
Владимир Меньшиков
Member

Откуда: Санкт-Петербург
Сообщений: 68
AlanDenton,
Благодарю. Посмотрим, что из этого получится. Интересно что после перезапуска сервера всё работает быстро, а вот спустя некоторое время ничинаются "тормоза".
6 сен 16, 14:32    [19632988]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в состоянии Suspended, как выяснить чего он ждёт?  [new]
o-o
Guest
да у нас постоянно такая картинка, и это нормальное состояние вещей.
а "размножается" оно за счет разных execution_context.
вот у меня "размноженное".
процессоров 8,
но max degree of parallelism = 4.
параллелит на 4, но каждый из четырех ждет других четырех, а те еще других четырех,
тоже ждущих четырех.
ну Repartition Streams, веер.
все с этим ок.

К сообщению приложен файл. Размер - 94Kb
6 сен 16, 14:53    [19633111]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в состоянии Suspended, как выяснить чего он ждёт?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Ожидание CXPACKET не приводит к
автор
Интересно что после перезапуска сервера всё работает быстро, а вот спустя некоторое время ничинаются "тормоза".
6 сен 16, 15:06    [19633189]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в состоянии Suspended, как выяснить чего он ждёт?  [new]
o-o
Guest
Владислав Колосов
Ожидание CXPACKET не приводит к
автор
Интересно что после перезапуска сервера всё работает быстро, а вот спустя некоторое время ничинаются "тормоза".

зато его много, вот на него и валят.
6 сен 16, 15:21    [19633278]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в состоянии Suspended, как выяснить чего он ждёт?  [new]
Владимир Меньшиков
Member

Откуда: Санкт-Петербург
Сообщений: 68
o-o
зато его много, вот на него и валят.

Запрос выдает данные для отчета в репортинг сервисе. После перезагрузки отчет отрабатывает за минуту - 2. Спустя некоторое время отчёт висит 4 часа.
6 сен 16, 16:04    [19633572]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в состоянии Suspended, как выяснить чего он ждёт?  [new]
o-o
Guest
ну так и у меня отчет на картинке.
хоть рестарт, хоть нет,
сколько надо, столько и лопатит.
---
смотрите ожидания
sys.dm_os_waiting_tasks join sys.dm_exec_sessions
6 сен 16, 16:07    [19633592]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в состоянии Suspended, как выяснить чего он ждёт?  [new]
komrad
Member

Откуда:
Сообщений: 5261
Владимир Меньшиков
o-o
зато его много, вот на него и валят.

Запрос выдает данные для отчета в репортинг сервисе. После перезагрузки отчет отрабатывает за минуту - 2. Спустя некоторое время отчёт висит 4 часа.

классическая картинка с параметризацией и селективностью данных - после рестарта генерится быстрый план для одного набора параметров, а спустя некоторое время для другого набора параметров данный план оказывается неэффективным
6 сен 16, 16:27    [19633714]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в состоянии Suspended, как выяснить чего он ждёт?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Владимир Меньшиков,

так может происходить из-за того, что Вы пишете "универсальный" запрос для любого количества и значений параметров. В этом случае сервер может путаться в том - какой план использовать из кэша запросов для какого набора параметров.
Как вариант - использовать принудительную компиляцию запроса OPTION(RECOMPILE). Если и другие варианты. Все накладывают какие-то ограничения.
7 сен 16, 11:36    [19636372]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в состоянии Suspended, как выяснить чего он ждёт?  [new]
andrey odegov
Member

Откуда:
Сообщений: 473
может запрос исполняемый покажете?
7 сен 16, 12:58    [19637090]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить