2009-10-15 45 views

回答

4

ASP.NET有一个“工作线程”池,它将分配给新请求,直到池耗尽。然后,请求排队等待,直到工作线程返回到池(通过其先前的请求以某种方式结束)。

默认情况下,我相信有20个可用。微软推荐的最大值为100.

所以,要回答你的问题 - 如果这样配置,你的web应用程序可以有(约)100个线程同时发出TCP请求(尽管注意到实际的TCP操作是在I/O线程,因此从技术上来说,连接到目标的实际线程数可能会略少)。

+0

还有很多其他因素您也会考虑。使用单台计算机调用应用程序不会考虑网络延迟等因素。我会考虑对测试人员,LoadRunner或类似的负载测试软件使用Visual Studio等测试框架。 – 2009-10-15 01:45:37

2

是否为每个asp.net请求创建了一个新线程?

我对请求管道的理解并不完美,所以这可能不是100%准确的。但据我所知,一个新的线程不会创建时间。它使用线程池,因此您可能会重复使用先前请求中的线程,或者甚至需要等待几毫秒才能使池中的线程可用。因此,如果池未满,将创建一个新线程。

0

如果您正在编写应用程序以使用.NET 3.5 SP1测试负载,并且正在使用HttpWebRequest命中该页面进行测试,请确保将设置包含在app.config中以增加并发连接限制到超出默认值2的单个Web服务器。也就是说,您可能必须从多台计算机上启动Web服务器才能生成可观的负载量,以真正测试服务器容量。

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.net> 
    <connectionManagement> 
     <add address="*" maxconnection="100" /> 
    </connectionManagement> 
    </system.net> 
</configuration> 

正如其他人所说的,确保您的ASP.NET网站的线程限制也被设置为同样高。

相关问题