HttpWebRequest 连接限制和 RestFUL 服务器

Posted

技术标签:

【中文标题】HttpWebRequest 连接限制和 RestFUL 服务器【英文标题】:HttpWebRequest Connection Limit and RestFUL server 【发布时间】:2010-12-21 11:28:18 【问题描述】:

我创建了一个服务器产品,它连接到一些社交网络服务器并发送状态更新等数据。使用此解决方案的用户已经通过必要的社交网络服务器对服务器进行了身份验证。

其实我这个时候没有问题,但我想我会的。

我的服务器将通过带有 C# HttpWebRequest 实例的 Http 向必要的服务器打开数千个并发请求。我已经知道可以使用以下属性更改并发请求限制。

ServicePointManager.DefaultConnectionLimit

AFAIK,这个限制是最大 100 甚至你设置的超过 100。

因此,即使更改 ServicePointManager 的 DefaultConnectionLimit 属性,我也会面临 HttpWebRequest 的瓶颈问题。

我想知道你们对此有何看法。 你有什么建议吗 ?

【问题讨论】:

您真的、绝对地同时需要所有这些连接吗?即使这样做,您是否能够同时充分地处理响应? 你是如何使用连接的?同步/异步 【参考方案1】:

忽略这是否是一个好主意,您是否尝试过为每个请求使用唯一的 ConnectionGroupName,例如Guid.NewGuid().ToString()?连接限制是每个连接组的,因此这可能会有所帮助,除非有一些全局限制。您应该禁用 KeepAlive,除非您将在后续请求中重用组名。请参阅我对HttpWebRequest How to handle (premature) closure of underlying TCP connection? 的回复。

【讨论】:

听起来不错,你有没有为你的想法申请过压力测试? 我没有尝试过大量连接,但它确实在小范围内覆盖了连接限制。这在 MSDN 中有提到,我也尝试过。 MSDN:“每个连接组都会为服务器创建额外的连接。这可能会导致超出该服务器的 ServicePoint.ConnectionLimit 属性设置的连接数。” 这也是 System.Net.HttpClient 使用的策略。仅适用于像我这样现在来到此线程的任何人。

以上是关于HttpWebRequest 连接限制和 RestFUL 服务器的主要内容,如果未能解决你的问题,请参考以下文章

多线程环境下调用 HttpWebRequest 并发连接限制

HttpWebRequest 对每个主机 2 个连接的限制是不是适用于 HttpClient?

HttpWebRequest怎么长连接

在 Web 应用程序中无需等待的异步 HttpWebRequest

javascript FeathersJS HTTP(REST API)和Web套接字连接的速率限制(Express,Node.js)

WebClient、HttpWebRequest 和 HttpClient 的最大并发请求数