Я работаю с 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 каким-то образом оптимизирует то, что должно быть расшифровано экземпляром пересылки, что повысит производительность.
Первым делом в понедельник я хочу отключить шифрование на транспортном уровне (между инициатором и сервером пересылки), чтобы посмотреть, не происходит ли это в нашем узком месте. Возможно ли, что это может привести к большим накладным расходам в наших коммуникациях, или один экземпляр переадресации не может создать такое большое узкое место?