Asp.Net是对每个请求建立一个线程,还是使用线程池?

解决方案 »

  1.   

    使用线程池和new 一个Thread从Request的角度是一样的啊,所以这个只是一个优化的问题。
      

  2.   

    有项目管理经验的.NET开发的朋友,加上限500人的QQ群28720769,一起交流。
      

  3.   

    是的,对Request是差不多的。如果项目需要使用池化管理的连接Connection资源,
    如果asp.net线程已经被池话,可以很省事很多了。
      

  4.   

    访问请求是顺序串行排队处理的
    http://msdn.microsoft.com/zh-cn/library/ms178473(VS.80).aspx
      

  5.   

    以前没考虑过这东西,拜楼主所赐,了解了一下,给楼主作个参考当 ASP.NET 接收针对页的请求时,它从线程池中提取一个线程并将请求分配给该线程。一个普通的(或同步的)页在该请求期间保留线程,从而防止该线程用于处理其他请求。如果一个同步请求成为 I/O bound(例如,如果它调用一个远程 Web 服务或查询一个远程数据库,并等待调用返回),那么分配给该请求的线程在调用返回之前处于挂起状态。 这影响了可伸缩性,原因是线程池的可用线程是有限的。 这个数字的设置是在 machine.config 的 下述节点的 maxWorkerThreads 属性system.web>maxWorkerThreads 按 CPU 配置用于进程的辅助线程的最大数目。例如,如果单处理器服务器上的该值为 25,ASP.NET 使用运行时 API 将进程限制设置为 25。在双处理器服务器上,该限制设置为 50。该属性的值必须等于或大于 httpRuntime 配置节中的 minFreeThread 属性设置。 该属性的范围是从 5 到 100。 ASP.net请求队列上述设置中,还有一个队列设置,如下:requestQueueLimit 指定队列中允许的请求数,超过此数目后,ASP.NET 将开始向新请求返回“503 - 服务器太忙”消息。  默认情况下,这个可用分线程数为1000。下图为IIS6和IIS7中这个参数的设置地方。IIS 7 的可用线程数设置IIS 6 的可用线程数设置 如果所有请求处理线程全部阻塞以等待 I/O 操作完成,则其他请求排入队列等待线程释放。 最好的情况是吞吐量减少,因为请求等待较长的时间才能得到处理。 最坏的情况则是该队列填满,并且 ASP.NET 因 503“Server Unavailable”错误使后续请求失败