我有一个WCF服务监听Azure Service Bus Relay,由于我无法更改,我在Windows服务中自我托管。
将服务置于并发加载之后 - 通常是通过给它一系列长时间运行的请求 - 我们开始从Azure Service Bus返回以下消息:
<Error>
<Code>502</Code>
<Detail>Bad Gateway.TrackingId:f0e32d08-2721-464c-a108-fe63f1efc443_G23,TimeStamp:4/23/2013 8:22:18 AM</Detail>
</Error>
我们怀疑并发负载会导致此问题。
我的服务完全无国籍。
ServiceHost = a WebServiceHost which we instantiate ourselves.
Binding = BasicHttpRelayBinding
InstanceContextMode = Single
ConcurrencyMode = Multiple
SessionMode = NotAllowed
ServiceThrottlingBehaviour.MaxConcurrentConnections = A very large number
Transport = Streaming
我有四个问题:
答案 0 :(得分:3)
我是 Azure Service Bus Relay 的员工。
我刚刚运行了一个查询来追踪您的问题。 (为了将来的参考,如果我知道你正在使用的命名空间会更容易。)
在尝试502请求时,似乎未检测到 ServiceHost侦听器已连接到服务总线。
最简单的调试方法是将ConnectionStatusBehavior
挂钩到您的终端,并在OnFaulted
上挂钩ServiceHost
事件。
另请注意,Service Bus中的特定VM可能会在短时间内脱机。发生这种情况时,ServiceHost
可能会显示离线约5-15秒。避免这种情况的最佳方法是始终确保您在单独的进程/ AppDomain中托管(2)ServiceHosts
,以便任何单个VM中断都不会影响您的服务。 (这与网站托管推荐非常相似。)
如果在遵循这些建议后出现任何意外问题,请直接与我联系toddreif@microsoft.com
,以便我们进行调查。