Azure Service Bus中继性能

时间:2012-04-03 08:57:21

标签: performance azure connection-pooling servicebus channelfactory

我正在使用nettcprelaybinding的服务总线。一方是OnPremise服务器,它与服务总线有一个持续的连接。另一端是Azure Web角色,它通过打开相应的服务总线并从服务器获取信息来响应传入的Web请求。

我关心的是频道创作的表现。通过服务总线建立与onpremise服务器的新连接需要几秒钟。缓存我的ChannelFactory似乎没什么帮助。通道打开后的传输性能非常好。

有关如何改善效果的任何建议。 Azure中的缓存信息只能在某种程度上完成。我需要连接到onpremise服务器。

我可以以某种方式建立到服务总线的连接池吗?

更重要的是,有许多不同的onpremise服务器,因此它不仅仅是一个保持活跃的连接。

2 个答案:

答案 0 :(得分:7)

我是Microsoft的Service Bus团队的成员。与发送消息相比,打开连接的成本很高,因为双方都需要进行多次通信才能确保彼此通话。

缓解这一问题的方法是缓存一个频道而不是缓存一个ChannelFactory。为NetTcpRelayBinding连接执行了后台保持活动ping,以确保通道保持打开状态。

答案 1 :(得分:2)

您应该能够池连接,但Azure负载均衡器将terminate any open connection that sits idle for more then 60 seconds。因此,如果您缓存连接的时间长于调用之间的连接,则需要实现某种心跳模式以帮助保持连接活动。

您可能需要考虑的另一个选项是Azure Connect。这允许您创建ipsec指向从云托管资源到本地服务器的连接点。它确实需要在您想要连接的本地机箱上安装客户端,但有些已经使用它来建立与本地代理服务的简单网关连接。