WCF高实例数:有谁知道负面影响?

时间:2010-06-18 16:29:45

标签: c# .net wcf performance

是否有人因为服务实例计数高达60k而经历或知道负面影响?除了记忆消耗当然。

我计划在生产环境中增加允许的最大实例数的阈值。我基本上厌倦了严重的生产事件,因为“某些东西”忘记了正确关闭代理。

我打算去60k个实例,这样可以让我们的客户使用默认会话超时以及我们客户的平均通话费率来维持服务。

限制设置为:

  • maxConcurrentCalls = 100
  • maxConcurrentSessions = 60000
  • maxConcurrentInstances = 60000
  • InstanceContextMode = PerSession

谢谢, 亚历

1 个答案:

答案 0 :(得分:3)

默认并发实例是无限制。 60k将没有任何区别。

如果您未对服务应用限制,则默认值为

•maxConcurrentCalls = 16
•maxConcurrentSessions = 10
•maxConcurrentInstances = Unlimited

有多种方法可以应用限制和扩展默认值,但所有这些都取决于您的InstanceContext,Concurrency和Session模式?基于这些答案,我可以建议最佳配置设置。

我通过WCF / Trottling Here

在我关于ESB的文章中介绍了其中一些内容

<强>更新

感谢您的回复。每个会话都很好。有一篇关于优化WCFService Here

的文章

他们建议将设置更改为略高于16 *的CPU数量。由于您正在使用每个会话,因此应将ConcurrentCalls设置为并发实例的1-3%。

因此,假设您的服务器中有8个核心。我会建议你在每个会话服务上设置一个起点:

<serviceThrottling maxConcurrentCalls="6"
  maxConcurrentInstances="200"
  maxConcurrentSessions="200"/>

这可以消除客户端没有关闭连接的问题,特别是如果您当前使用默认的10个会话。你的服务器应该能够处理更多,但60k可能是矫枉过正。您可以根据需要进行测试和增加。这一切都取决于盒子的力量以及你使用它的其他方面。

根据这些设置,如果您需要进一步增长,您可以监控性能并查看是否可以增加它们,否则,您可以轻松扩展到更多服务器和负载平衡。

希望这有助于...快乐编码