繁体   English   中英

每次您连接到ASP.net应用程序时,都会创建一个新线程吗?

[英]Everytime u connect to an ASP.net application is a new Thread created?

情况:我的ASP.net应用程序通过TCP连接连接到另一个系统以获取信息

我正在尝试模拟100个人同时坐在和登录到ASP.net应用程序并连接到TCP连接的情况

将创建具有100个尝试连接到TCP连接的线程的Windows应用程序,以提供正确的模拟/精确结果

要么

ASP.net处理不同实例的方式是否不同。

ASP.NET有一个“工作线程”池,它将分配给新的请求,直到该池用完为止。 然后将请求排队等待,直到工作线程返回到池为止(由其先前的请求以一种或另一种方式结束)。

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

因此,回答您的问题-如果以此方式配置,则您的Web应用程序可能同时具有(大约)100个线程同时发出TCP请求(尽管请注意,实际的TCP操作是在I / O线程上完成的,因此从技术上讲,实际的线程数是连接到目标的数量可能会少一些)。

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

我对请求管道的理解不是很完美,因此可能不是100%准确。 但是据我了解,并不是每次都会创建一个新线程。 它使用一个线程池,因此您可能会重复使用上一个请求中的线程,或者甚至可能需要等待几毫秒才能使池中的线程可用。 因此,如果池未满,则会创建一个新线程。

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

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

就像上面其他人所说的那样,请确保将ASP.NET网站的线程限制设置为同样高。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM