2011-01-13 30 views
4

我已经在我的开发环境中运行了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安全能够以某种方式优化转发实例需要解密的内容,从而提高性能。

星期一我想关闭传输层(发起者和转发者之间)的加密,看看我们的瓶颈是否发生。这是否有可能导致我们的通信产生巨大的开销,或者一个转发实例是否会产生如此大的瓶颈?

+0

您好Graeme,Remus Rusano的博客包含一些很好的服务代理信息(如果您还没有看到它):http://rusanu.com/blog/ – 2011-01-13 14:48:30

+0

您在服务代理性能计数器值方面看到了什么? :http://msdn.microsoft.com/en-us/library/ms166069.aspx – 2011-01-14 02:25:31

回答

3

什么是SQL Server版本?

有几个问题与转发性能有关。我建议您升级到最新的SQL Server 2008 R2并部署最新的累积更新。如果升级在您的环境中存在问题,则只能升级转发器实例。

0

这可能是一个愚蠢的建议,但你最近是否改变了网络拓扑结构?也许换掉网线或过热开关?如果这种情况突然发生,听起来更像是物理变化而不是逻辑变化。我会检查两台机器上的Windows事件日志。

-1

是的,对话安全是与转发器结合的最佳方法。否则,开销将是巨大的。