ASP.NET / IIS7中可以同时进行多少个HttpWebRequest的外发调用?

9
我正在编写一款ASP.NET Web应用程序,它将在Windows Server 2008(IIS7)上运行。
每个页面的代码后端都需要使用HttpWebRequest和GET进行至少一个同步Web服务调用,以访问外部服务器。
我的问题是:我可以发出多少个HttpWebRequest调用?(假设我所调用的服务器没有限制)
是否有任何方法来池化这些连接以使应用程序更好地扩展?Web Garden配置是否有帮助?
3个回答

6

默认情况下,HTTP/1.1服务器限制连接数为2个,而HTTP/1.0服务器限制连接数为4个。因此,如果您尝试向HTTP/1.1服务器发出超过两个未完成的请求,那么您的ASP.NET应用程序将面临严重的吞吐量问题。

您需要增加连接限制,可以在每个服务器上增加,也可以全局增加。

例如,在全局范围内:

ServicePointManager.DefaultConnectionLimit = 10; // allow 10 outstanding connections

希望这能帮到您。

这真的很有帮助。我想补充一下,要通过web.config设置它,您可以将地址添加到system.net/connectionManagement中。 - Jacob

1

1

我认为你的问题应该针对网络配置。

如果每个页面都依赖于同步外部调用,那么你会遇到麻烦。如果有N个请求在外部Web服务上挂起,你就会遇到一些问题,而你无能为力。

你考虑过带回调函数的异步调用吗?

编辑:ASP.NET 2.0中的异步页面


当从ASPX页面的代码后台调用异步调用时,它们能够正常工作吗? - frankadelic
那是一个很有深度的问题,但我添加了一个链接,其中包含一个示例,应该可以帮助你入门。 - rick schott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接