诊断可怜的Sql Server Service Broker转发性能

时间:2011-01-13 13:48:15

标签: sql-server performance forwarding service-broker

我已经在我的开发环境中运行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 个答案:

答案 0 :(得分:3)

什么是SQL Server版本?

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

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

是的,Dialog安全性是与转发器结合使用的最佳方法。否则开销将是巨大的。