我已经在我的开发环境中运行了Service Broker几个月了,并且每秒向1000条消息(足以满足我的需要)拥有完美的性能。诊断可怜的Sql Server服务代理转发性能
我也一直在我的真实生产环境的一个复制品上运行,它涉及一个转发实例,并且今天第一次通过它推动了一些负载,并带来了可怕的结果!我试图理解我所看到的,但我挣扎了一下,所以我想我会把它看出来,看看有没有人可以帮忙。
首先,消息是通过转发器从开始到结束传递。然而,当我推送了几千条消息时,我发现有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
任何人都可以帮助我指出我可以做的一些检查,或者可能是我已经错过的一些显而易见的事情。我知道我有什么错,但只是看不到。
编辑 - 2011年1月14日 - 更多信息:更多信息: 关于这方面的更多信息 - 我们将消息转发实例排除在外,立即看到大量改进 - 2000条消息在几秒钟内发送。
该体系结构使用传输安全性,因此我们正在尝试切换到对话安全性,因为我们已经读过传输安全/转发会损害性能的问题。我们希望Dialog安全能够以某种方式优化转发实例需要解密的内容,从而提高性能。
星期一我想关闭传输层(发起者和转发者之间)的加密,看看我们的瓶颈是否发生。这是否有可能导致我们的通信产生巨大的开销,或者一个转发实例是否会产生如此大的瓶颈?
您好Graeme,Remus Rusano的博客包含一些很好的服务代理信息(如果您还没有看到它):http://rusanu.com/blog/ – 2011-01-13 14:48:30
您在服务代理性能计数器值方面看到了什么? :http://msdn.microsoft.com/en-us/library/ms166069.aspx – 2011-01-14 02:25:31