2

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

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

4

3 回答 3

3

什么 SQL Server 版本?

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

于 2011-01-15T19:57:19.370 回答
0

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

于 2011-06-17T03:54:19.260 回答
-1

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

于 2013-11-06T03:32:37.973 回答