我已经在我的开发环境中运行 Service Broker 几个月了,并且性能非常好,达到每秒 1000 条消息(足以满足我的需求)。
我也一直在我的真实生产环境的一个缩减副本上运行,其中涉及一个转发实例,今天第一次通过它推动了一些负载,结果很糟糕!我试图了解我所看到的,但有点挣扎,所以我想我会把它拿出来看看是否有人可以提供帮助。
首先,通过转发器从头到尾传递消息。然而,当我推送几千条消息时,我看到批量发送 20 到 100 条消息,然后延迟一两分钟。消息最终被成功处理。
查看 Store 上的队列(初始发送者),有成千上万条等待转发的消息正在流出。
安全设置如下:
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
任何人都可以通过指出我可以进行的一些检查来帮助我,或者可能是我错过的一些明显的事情。我知道我有什么问题,但就是看不出是什么。
编辑 - 2011 年 1 月 1 日 - 更多信息:关于此的更多信息 - 我们将消息转发实例排除在外,并立即看到了巨大的改进 - 2000 条消息在几秒钟内交付。
该架构使用传输安全性,因此我们目前正在尝试切换到对话安全性,因为我们已经了解到传输安全性/转发会损害性能。我们希望 Dialog 安全性能够以某种方式优化转发实例需要解密的内容,从而提高性能。
星期一的第一件事我想关闭传输层(在发起者和转发者之间)的加密,看看这是否是我们的瓶颈发生的地方。这是否可能会导致我们的通信开销很大,或者一个转发实例不应该产生如此大的瓶颈?