IIS7.5 64bit可以同时处理每个逻辑cpu多少个线程?我已经听到每个逻辑CPU有12个IIS处理线程,但我也听说每个逻辑CPU有100个IIS处理线程。
更新
很抱歉没有具体,但我指的是IIS线程池线程。那是当一个http get请求进入我的webapi服务器时,我的服务器可以同时处理多少并发的http get请求(每个逻辑cpu)?我试图根据我的服务器可以处理的请求数量计算一些阈值容量数,这取决于我获得的平均响应时间,即〜500ms。
答案 0 :(得分:4)
http://msdn.microsoft.com/en-us/library/system.threading.threadpool
每个进程有一个线程池。从.NET开始 框架4,进程的线程池的默认大小取决于 有几个因素,例如虚拟地址空间的大小。一个 进程可以调用GetMaxThreads方法来确定数量 线程。可以通过更改线程池中的线程数 使用SetMaxThreads方法。每个线程使用默认堆栈 大小并以默认优先级运行。
http://blogs.msdn.com/b/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx
因此对于IIS 7.0集成模式,命名为DWORD 内部的 MaxConcurrentRequestsPerCPU HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ ASP.NET \ 2.0.50727.0确定 每个CPU的并发请求数。默认情况下,它没有 存在,每个CPU的请求数限制为12.如果你是 好奇,看看ASP.NET请求执行速度有多快 线程切换,可以将值设置为0.这将导致请求 在IIS I / O线程上执行,而不切换到CLR 线程池线程。我不建议这主要是因为动态 请求需要很长时间才能相对于静态请求执行,并且 我相信系统的整体性能更好 线程切换。但是,这很重要,如果您的申请 由主要或完全异步请求组成,默认情况下 MaxConcurrentReqeustsPerCPU限制为12将限制太多 你,特别是如果请求很长时间运行。在这种情况下,我 建议将 MaxConcurrentRequestsPerCPU 设置为非常高 数。实际上,在v4.0中,我们更改了默认值 MaxConcurrentRequestsPerCPU 到5000.没什么特别的 5000,除了它是一个非常大的数字,因此将允许 大量异步请求同时执行。