Диагностика плохой производительности перенаправления Sql Server Service Broker - PullRequest
2 голосов
/ 13 января 2011

Я работаю с Service Broker в своей среде разработки уже несколько месяцев и обладаю совершенно адекватной производительностью, до 1000 сообщений в секунду (достаточно для моих нужд).

Я также работал на урезанной копии моей реальной производственной среды, которая включает экземпляр пересылки, и впервые за сегодня пробежал через него некоторую нагрузку с ужасными результатами! Я пытаюсь понять, что я вижу, но немного борюсь, поэтому я подумал, что выложу это, чтобы посмотреть, сможет ли кто-нибудь помочь.

Во-первых, сообщения доставляются от начала до конца через сервер пересылки. Однако, когда я нажал несколько тысяч сообщений, я увидел, что отправлялись пакеты от 20 до 100, а затем задержка на одну или две минуты. Сообщения в конечном итоге успешно обрабатываются.

Глядя на очередь в Магазине (первоначальный отправитель), тысячи сообщений находятся в ожидании пересылки, которые просачиваются.

Настройка безопасности выглядит следующим образом:

Store database -> Certificate -> Forwarding instance -> Windows Security -> Central database

Когда я включаю профилировщики, я вижу много ошибок:

Некоторые примеры для экземпляра пересылки:

7 - Send IO Error    (10054(failed to retrieve text for this error. Reason: 15105))

Forwarded Message Dropped  (The forwarded message has been dropped because a transport send error occurred when sending the message. Check previous events for the error.)

И на моем «центральном» целевом экземпляре:

A corrupted message has been received. The binary message preamble is malformed.

Broker message undeliverable    This message was dropped because it could not be dispatched on time. State: 2

Может ли кто-нибудь помочь, указав мне на некоторые проверки, которые я мог бы сделать, или на что-то очевидное, что я пропустил. Я знаю, что у меня что-то не так, но просто не вижу, что.

Редактировать - 14/1/2011 - дополнительная информация: Еще немного информации об этом - мы вынули наш экземпляр пересылки сообщений из уравнения и сразу же увидели значительные улучшения - 2000 сообщений были доставлены в считанные секунды.

В архитектуре используется безопасность транспорта, поэтому в настоящее время мы пытаемся переключиться на безопасность диалогов, поскольку мы прочитали, что безопасность / пересылка транспорта может снизить производительность. Мы надеемся, что безопасность Dialog каким-то образом оптимизирует то, что должно быть расшифровано экземпляром пересылки, что повысит производительность.

Первым делом в понедельник я хочу отключить шифрование на транспортном уровне (между инициатором и сервером пересылки), чтобы посмотреть, не происходит ли это в нашем узком месте. Возможно ли, что это может привести к большим накладным расходам в наших коммуникациях, или один экземпляр переадресации не может создать такое большое узкое место?

Ответы [ 3 ]

3 голосов
/ 15 января 2011

Какая версия SQL Server?

Исправлено несколько проблем с производительностью пересылки. Я рекомендую вам обновить до последней версии SQL Server 2008 R2 и развернуть последние накопительные обновления. Если обновление проблематично в вашей среде, вы можете обновить только экземпляр сервера пересылки.

0 голосов
/ 06 ноября 2013

Да, безопасность диалога - лучший подход в сочетании с экспедиторами. В противном случае накладные расходы будут огромными.

0 голосов
/ 17 июня 2011

Это может быть глупым предложением, но изменили ли вы топологию сети в последнее время? Может быть, поменял сетевой кабель или перегрел коммутатор? Если это происходит внезапно, это больше похоже на физическое изменение, чем на логическое. Я бы проверил журнал событий Windows на обеих машинах.

...