我有一个在 .net 4.0 和 IIS7 上运行的 Web 应用程序。提交表单时,我必须调用两个外部 Web 服务,等待响应,对其进行处理,然后返回响应。问题是每个 Web 服务大约需要 20 秒才能回复(这超出了我的控制范围)。我决定采用异步方法,这样我就可以同时访问这两个服务,而不是先访问一个服务,等待响应,然后再访问另一个服务。
现在,如果有 10 个用户同时提交,我将在 20 个单独的线程上创建 20 个出站请求。我读到 IIS 可能对此不太满意,因为限制设置为每个 CPU 12 个出站 TCP 连接(machine.config 中的 maxconnections)。有人可以确认这一点吗?在这个特定场景中,我还应该考虑其他什么以确保 IIS 正常运行吗?
谢谢!
答案1
您也可以覆盖 web.config 中的 maxconnection 值。
<system.net>
<connectionManagement>
<add address="*" maxconnection="20"/>
</connectionManagement>
</system.net>
我正在开发一个应用程序,它也使用多个外部 Web 服务作为数据源。特定页面可以进行十几个异步 Web 服务调用。因此,在我们的例子中,web.config 中的 maxconnection 设置为 2000,我们没有观察到出站连接限制。
唯一需要注意的是,我们的应用程序仍然托管在 IIS6 中,因此我不确定这在 IIS7 中是否会保持不变。但是,由于 maxconnection 配置是 .NET 特定的,而不是 IIS 特定的,因此我认为不会发生任何变化。