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

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

В одном проекте реализовал одну из задач через service broker.
Все работает - ошибок нет. Вот только стал наблюдать совершенно непонятное явление.
А именно:
В один из моментов выполнения в сторону servcie broker_а единовременно засылается около 200 сообщений. Все сообщения в разных диалогах и НЕ объеденены в группы.
Очередь service broker_а имеет 10 reader_ов. А вот запускаются только 5 !!!
Причем один из них имеет "waite type" = SOS_SCHEDULER_YIELD, что по BOL_у означает
Имеет место, когда задача добровольно отказывается от выполнения планировщиком в пользу других задач. В течение этого ожидания задача ожидает обновления своего такта.
И что бы это значило ?
Как с этим бороться ?
26 окт 09, 12:18    [7837648]     Ответить | Цитировать Сообщить модератору
 Re: Service broker - чего-то не пойму  [new]
Guest20091027
Guest
Greenhorn,

Когда я экспериментировал с SB, то наблюдал интересную картину: отправляем пачку сообщений (например 100), при нескольких ридерах (пробовал 8/16) сначала запускались 1-2, а потом происходил плавный рост кол-ва потоков обработки, пока не дойдет до предела.
Попробуйте понаблюдать у себя, возможно это "фича" SB.
27 окт 09, 10:14    [7842343]     Ответить | Цитировать Сообщить модератору
 Re: Service broker - чего-то не пойму  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Greenhorn
Добрый день.

В одном проекте реализовал одну из задач через service broker.
Все работает - ошибок нет. Вот только стал наблюдать совершенно непонятное явление.
А именно:
В один из моментов выполнения в сторону servcie broker_а единовременно засылается около 200 сообщений. Все сообщения в разных диалогах и НЕ объеденены в группы.
Очередь service broker_а имеет 10 reader_ов. А вот запускаются только 5 !!!
Причем один из них имеет "waite type" = SOS_SCHEDULER_YIELD, что по BOL_у означает
Имеет место, когда задача добровольно отказывается от выполнения планировщиком в пользу других задач. В течение этого ожидания задача ожидает обновления своего такта.
И что бы это значило ?
Как с этим бороться ?


а очередь не становится Дизаблед?
27 окт 09, 10:44    [7842676]     Ответить | Цитировать Сообщить модератору
 Re: Service broker - чего-то не пойму  [new]
mike909
Member

Откуда:
Сообщений: 662
Guest20091027
Greenhorn,

Когда я экспериментировал с SB, то наблюдал интересную картину: отправляем пачку сообщений (например 100), при нескольких ридерах (пробовал 8/16) сначала запускались 1-2, а потом происходил плавный рост кол-ва потоков обработки, пока не дойдет до предела.
Попробуйте понаблюдать у себя, возможно это "фича" SB.


Плавный рост происходит из за того, что SB не сразу запускает следующего reader_а, а пытается дождаться некоторое время (что-то около 2, 3 сек.), пока уже запущенный reader не затребует следующее сообщение.
У Greenhorn_а, что-то другое.
27 окт 09, 11:02    [7842899]     Ответить | Цитировать Сообщить модератору
 Re: Service broker - чего-то не пойму  [new]
Greenhorn
Member

Откуда:
Сообщений: 311
Winnipuh,

Нет, очередь не блокируется.

Как я уже и говорил - Все работает.
Только вот это "явление" напрягает, т.к. я не понимаю, ЧТО происходит - следовательно это может вылезти боком рано или поздно...

P.S. И еще одно наблюдение. БОльшая часть первых сообщений обрабатываются очень быстро примерно тремя reader_ами, затем идут "тяжелые" сообщения, на которые уходит до 20 мин. В этот момент кол-во reader_ов вырастает до пяти и все ... см. выше ...
Может у брокера есть какой-то механизм, который вычисляет паузу перед запуском следующего reader_а на основе статистики времени выполнения ?
27 окт 09, 12:46    [7843769]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить