【问题标题】:Multiple Calls to the same Web Service Blocking?多次调用同一个 Web 服务阻塞?
【发布时间】:2010-11-18 12:15:48
【问题描述】:

我们有一个向第 3 方网络服务发出请求的页面。在重负载下,此响应时间显着延长,但是第 3 方报告说,处理时间保持不变。有计时显示,从他们收到请求到他们发回请求的时间总是在 1.5-2.0 秒左右。现在我们正在经历超过 20 秒的等待时间。我对 ASP.NET 的理解是,每个请求都将在 IIS 线程池线程上运行,并向 3'rd 方服务返回和处理请求。所以我真的不明白是什么阻碍了我们。有什么我想念的吗?是否存在超出 IIS 的阻塞阈值限制?

如果我遗漏了一些内容,那么涵盖该主题的实体书推荐也将是任何答案的非常受欢迎的补充。

【问题讨论】:

  • 页面是从客户端还是服务器端发出请求?
  • 它从服务器端发出请求,这有关系吗? :)

标签: c# asp.net asp.net-3.5


【解决方案1】:

.NET 限制按照 HTTP 规范的建议对单个主机实施 2 个并发 Web 请求的限制。因此,在您的情况下,需要更多时间执行的不是 Web 服务,而是您的应用程序延迟请求以保持在此约束内。

您可以通过将此键添加到配置文件来提高 Web 服务的限制:

  <system.net>
    <connectionManagement>
      <!-- specific servers... -->
      <add address="http://example.org" maxconnection="20" />

      <!-- ...or any server -->
      <add address="*" maxconnection="8" />
    </connectionManagement>
  </system.net>

【讨论】:

  • 只有在服务器端的同一线程发出请求时才会出现这种情况。如果有多个用户,因此有多个 asp.net 会话,他们每个人都将在自己的线程中,并且没有这些限制。对吗?
  • @Mike,这不是真的。该限制会影响进程中的所有线程,在 ASP.NET 的情况下,即使是在同一应用程序池中运行的不同应用程序也是如此。
【解决方案2】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多