【问题标题】:Limit on open nettcpbinding connections限制打开的 nettcpbinding 连接
【发布时间】:2012-02-07 21:40:19
【问题描述】:

所以我意识到这是一个非常重要的问题,但这是我想要衡量的。

我有一个服务器,它通过 WCF 接受可靠会话 tcp 连接,并打开一个到客户端的回调通道。 99.999% 的时间,它只是连接,等待服务器发出回调(不主动处理任何事情,只是保持连接)。

我会遇到什么样的每台机器瓶颈?我已经在绑定上处理了 WCF <servicethrottling /> 属性,但仅从负载/最大连接/“我缺少的任何其他内容”的角度来看,我试图了解每个 Azure 可以服务多少客户端Small Instance,总的来说,这些家伙会坐视不理,只是等待。

【问题讨论】:

  • +1 好问题 - 不一定是好设计,而是好问题。真正的、非规范性设计相关的答案会很有趣。
  • 是的,我当然会考虑不同的设计,尽管低延迟响应是设计要求,所以我希望这会排除一些机制。

标签: c# wcf azure


【解决方案1】:

如果您要打开出站连接,则需要考虑增加

ServicePointManager.DefaultConnectionLimit

在您的角色 OnStart() 代码中。我不记得默认值了,但我相信它是 12。

当你在做的时候,不妨考虑设置

ServicePointManager.UseNagleAlgorithm

false,如果您推送大量短消息(哦,1400 字节以下)。否则消息会被缓冲半秒。我在 this SO answer 中详细介绍了 Nagle。

【讨论】:

  • 好建议!我已经解决了DefaultConnectionLimit,但我没有考虑过 Nagle 算法。如果我将有不同大小的调用,一些小于 1400,一些更大,如果使用 Nagle,我会在较大的调用上损失很多效率吗?
  • 使用较大的数据包,您不会受到 Nagle 的影响。
  • 酷,很高兴知道。感谢您的意见!
猜你喜欢
  • 2023-03-14
  • 2011-01-04
  • 1970-01-01
  • 2016-08-08
  • 2012-03-18
  • 2014-04-02
  • 2012-06-26
  • 2021-07-23
  • 2016-07-12
相关资源
最近更新 更多