c# - WCF 高实例计数 : anyone knows negative sideffects?

标签 c# .net wcf performance

有没有人经历过或知道拥有像 60k 这样的高服务实例数的负面影响?当然,除了内存消耗。

我计划提高生产环境中允许的最大实例数的阈值。我基本上厌倦了仅仅因为“某事”忘记正确关闭代理而导致的严重生产事件。

我计划使用 60k 实例这样的实例,这将允许服务以我们客户的平均调用率使用默认 session 超时继续存在。

限制设置为:

  • maxConcurrentCalls = 100
  • 最大并发 session 数 = 60000
  • 最大并发实例数 = 60000
  • InstanceContextMode = PerSession

谢谢, 亚历克斯

最佳答案

默认的并发实例是无限的。 60k 没什么区别。

当您不对您的服务应用限制时,默认值为

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

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

我在通过 WCF/Trottling 关于 ESB 的文章中介绍了其中的一些内容 Here

更新:

感谢您的回复。每个 session 很好。有一篇关于优化 WCFService 的好文章 Here

他们建议将您的设置更改为略高于 16 * CPU 数量。由于您是按 session 使用的,因此您应该将 ConcurrentCalls 设置为并发实例的 1-3%。

假设您的服务器中有 8 个内核。我会建议您在每个 session 服务上设置一个起点,如下所示:

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

这应该可以消除您的客户端不关闭连接的问题,尤其是当您当前使用默认的 10 个 session 时。您的服务器应该能够处理更多,但 60k 可能有点过头了。您可以根据需要进行测试和增加。这完全取决于盒子的功率以及您使用它的其他目的。

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

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

关于c# - WCF 高实例计数 : anyone knows negative sideffects?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3071433/

相关文章:

wcf - 模拟 PostSharp 属性的最简单方法

c# - 无需互联网查询即可确保付费应用程序安全的最佳方式

c# - 列出 : Count vs Count()

c# - WCF数据同步

c# - T 之间的映射 --> IHandler<T>

c# - 如何使用.net更改Windows2k8的时区设置

architecture - OData 是否仅用作向其他方发布数据的方式,或者我可以将其用作我的应用程序的数据层吗

c# - 无法在 C# 中序列化数组对象

c# - 如何在 Nhibernate 中定义一个 CHAR (ORACLE) 列?

c# - 请求发现码头时出错(需要 HTTPS)