情况: 我的ASP.net应用程序通过TCP连接每次你连接到一个ASP.net应用程序是一个新的线程创建?
我试图模拟100人在同一时间坐在&记录到我的ASP.net应用程序,连接到TCP连接连接到其他系统的信息
将创建具有100个线程试图连接到TCP连接提供正确的模拟/确切的结果
OR
不ASP.net手柄DIFF一个Windows应用程序不同的实例不同。
情况: 我的ASP.net应用程序通过TCP连接每次你连接到一个ASP.net应用程序是一个新的线程创建?
我试图模拟100人在同一时间坐在&记录到我的ASP.net应用程序,连接到TCP连接连接到其他系统的信息
将创建具有100个线程试图连接到TCP连接提供正确的模拟/确切的结果
OR
不ASP.net手柄DIFF一个Windows应用程序不同的实例不同。
ASP.NET有一个“工作线程”池,它将分配给新请求,直到池耗尽。然后,请求排队等待,直到工作线程返回到池(通过其先前的请求以某种方式结束)。
默认情况下,我相信有20个可用。微软推荐的最大值为100.
所以,要回答你的问题 - 如果这样配置,你的web应用程序可以有(约)100个线程同时发出TCP请求(尽管注意到实际的TCP操作是在I/O线程,因此从技术上来说,连接到目标的实际线程数可能会略少)。
是否为每个asp.net请求创建了一个新线程?
我对请求管道的理解并不完美,所以这可能不是100%准确的。但据我所知,一个新的线程不会创建每时间。它使用线程池,因此您可能会重复使用先前请求中的线程,或者甚至需要等待几毫秒才能使池中的线程可用。因此,如果池未满,将创建一个新线程。
如果您正在编写应用程序以使用.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网站的线程限制也被设置为同样高。
还有很多其他因素您也会考虑。使用单台计算机调用应用程序不会考虑网络延迟等因素。我会考虑对测试人员,LoadRunner或类似的负载测试软件使用Visual Studio等测试框架。 – 2009-10-15 01:45:37