【问题标题】:WCF Fails Under Load - MessageSecurityExceptionWCF 在负载下失败 - MessageSecurityException
【发布时间】:2009-01-21 23:00:00
【问题描述】:

我正在对我的网站进行负载测试。该站点使用 clientCredentialType="Windows" 调用在同一机器上运行的 WCF 服务。一切正常,直到我达到一定的负载(甚至不是很高),然后我得到以下错误:

System.ServiceModel.Security.MessageSecurityException: HTTP 请求被禁止 客户端认证方案 '匿名的'。 ----> System.Net.WebException:远程 服务器返回错误:(403) 禁止。

每次通话时,我都会创建一个频道:

var proxy = (IClientChannel)channelFactory.CreateChannel();

成功后,我关闭:

proxy.Close();

出错时,我中止:

proxy.Abort();

有什么想法吗?我可以做些什么来更好地处理负载?寻找什么?

【问题讨论】:

    标签: .net wcf load-testing stress-testing


    【解决方案1】:

    您的服务是会话服务还是您不担心在调用之间保持状态?如果您没有状态,您可能希望将您的服务标记为 PerCall 服务。这将确保服务实例仅在客户端调用正在进行时才存在。

    Juval Lowy 的优秀著作“Programming WCF Services”第 2 版的第 4 章涵盖了这个主题。

    默认是 PerSession,这可能不是你想要的。

    另外,请在 MSDN 上查看:操作方法:Control Service Instancing

    【讨论】:

      【解决方案2】:

      谢谢特里。不,我的服务不保持状态。我尝试用以下方式装饰我的服务类:

      [ServiceBehaviorAttribute(InstanceContextMode = InstanceContextMode.PerCall)]
      

      没有帮助。故障点似乎是大约 4 个并发调用。

      【讨论】:

      • 你的 WCF 服务在做什么工作?您可以尝试的另一件事是模拟您的服务。使用相同的接口,但让实际的服务代码什么也不做。看看你有没有类似的问题。如果没有,在服务中放置一些 Thread.Sleep 来模拟正在发生的事情。
      • 这会让我们知道您的设置方式是否有问题或您的服务有问题。明白我的意思吗?
      【解决方案3】:

      问题是,啊,我在我的开发机器上运行测试,它是 XP,它使用 IIS 5,它有 10 个连接的限制。

      【讨论】:

        猜你喜欢
        • 2012-07-06
        • 1970-01-01
        • 1970-01-01
        • 2012-11-18
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 2015-05-03
        • 1970-01-01
        相关资源
        最近更新 更多