2010-11-18 38 views
8

我们有一个页面向第三方Web服务发出请求。在负载较重的情况下,响应时间显着延长,但第三方报告说处理的时间保持不变。有时间表明从他们收到请求到他们发回的时间总是在1.5-2.0秒左右。现在我们正在等待超过20秒的时间。我对ASP.NET的理解是,每个请求都将在IIS线程池线程上运行,并向第三方服务返回并处理请求。所以我不明白什么可能会阻止我们的结果。有什么我失踪?是否有阻止超出IIS的阈值限制?多次调用相同的Web服务阻塞?

如果我错过了一些物理图书的建议,涵盖此主题也将是一个非常受欢迎的除了任何答案。

+0

做该页面是从客户端还是服务器端发出请求? – 2010-11-18 16:55:32

+0

它从服务器端发出请求,那会很重要吗? :) – 2010-11-18 17:04:33

+0

+1好问题 – PRR 2010-11-25 10:18:45

回答

9

根据HTTP规范的建议,.NET限制对单个主机强制执行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> 
+0

只有在服务器端的同一线程发出请求时才会出现这种情况。如果有多个用户,那么多个asp.net会话,他们每个人都会在自己的线程中,并没有这些限制。对? – 2010-11-18 16:57:10

+0

@Mike,那是不正确的。该限制会影响进程中的所有线程,以防ASP.NET甚至在同一应用程序池中运行不同的应用程序。 – realMarkusSchmidt 2010-11-18 18:24:40

+0

哇,不知道。 – 2010-11-18 18:50:34