2013-03-12 69 views
2

每个逻辑cpu可以同时处理多少个线程IIS7.5 64bit?我听说每个逻辑CPU有12个IIS处理线程,但我也听说每个逻辑CPU有100个IIS处理线程。每个逻辑CPU有多少个线程可以同时处理IIS7.5 64bit?

UPDATE:

对不起,不是具体的,但我指的是IIS线程池线程。那就是当一个http get请求进入我的webapi服务器时,我的服务器可以同时处理多少个并发http请求(每个逻辑cpu)?我试图根据我的服务器根据我获得的平均响应时间来处理的请求数量来计算一些阈值容量数,这是〜500毫秒。

+0

这取决于线程正在做什么。考虑使用异步操作来完全避免线程。 – SLaks 2013-03-12 22:13:40

+0

同意SLaks,事实上IIS默认情况下会使用12个线程,但几乎所有的动态内容(无论是PHP,ASP。NET等)将有自己的线程池,在某些方面使12个线程的具体答案不感兴趣。那些线程只能用于内容(反正是异步),并且处理请求到动态内容处理程序(如ASP.NET管道,甚至是传统的ASP模块),因此它将用得很少。你在跑什么? ASP.NET? – 2013-03-13 16:49:55

+0

@SLaks:对不起,不是特定的,但我指的是IIS线程池线程。那就是当一个http get请求进入我的webapi服务器时,我的服务器可以同时处理多少个并发http请求(每个逻辑cpu)?我试图根据我的服务器可以处理的请求数来计算一些阈值容量数。 – JaJ 2013-03-13 16:55:47

回答

3

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集成模式,一个名为 MaxConcurrentRequestsPerCPU内 HKEY_LOCAL_MACHINE \ SOFTWARE \微软\ ASP.NET DWORD \ 2.0.50727.0决定 并发请求数每个CPU为。默认情况下,它不存在 ,并且每个CPU的请求数限制为12.如果您是 想知道在不使用 线程切换的情况下执行多少ASP.NET请求,可以将该值设置为0。这将导致请求 在IIS I/O线程上执行,而不切换到线程池线程CLR 。我不建议这样做,主要是因为动态 请求花费很长时间才能执行相对于静态请求的操作,而我认为 线程切换会使系统的整体性能更好。但是,这很重要,如果您的应用程序 主要或完全由异步请求组成,默认情况下,对于 而言,默认情况下,MaxConcurrentReqeustsPerCPU限制为12会受到太多限制,特别是在请求运行时间很长的情况下。在这种情况下,我建议将MaxConcurrentRequestsPerCPU设置为非常高的 数字。事实上,在V4.0中,我们已经改变了默认 MaxConcurrentRequestsPerCPU到5000有什么特别之处 5000,除了它是一个非常大的数字,因此将允许 大量异步请求的并发执行。

+1

谢谢!什么被定义为CPU?我有一个6核处理器和12个逻辑处理器。这是否意味着它将使用5000个并发请求@ 6或@ 12个单位? – JaJ 2013-03-19 20:59:52

相关问题