是否可以告诉IIS 7并行处理的请求队列? [英] Is it possible to tell IIS 7 to process the request queue in parallel?

查看:521
本文介绍了是否可以告诉IIS 7并行处理的请求队列?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

目前,我们正在开发一个ASMX,ASP 2.0,IIS,做一些计算7 Web服务(并返回一个动态生成的文件),将需要约。 60秒运行。

由于磨片有一个大机器多内核和大量的RAM,我预计,IIS会尽可能的路线,在其请求队列中的应用程序池的线程池的所有可用线程到达的请求。

但是,我们体验安静相反的:

当我们发出请求,从多个不同的客户ASMX Web服务URL时,IIS似乎串行处理这些请求。即请求1到达时,正在处理,然后请求2被处理,然后请求3等

问:

是否有可能(不更改Web服务的C#code)配置IIS以并行处理的请求,如果有足够的线程可用?

如果的的:我应该怎么办呢结果?
它的没有的:任何变通办法/提示


解决方案

请确保您有最大工作进程的设置> 1,以使工作池成为<一个应用程序池href=\"http://www.iis-aid.com/articles/performance_testing/boosting_performance_using_an_iis_web_garden\"相对=nofollow> Web园。默认情况下每个应用程序池设置为只使用一个过程,这将导致排队的请求。

您也可能想看看这篇文章使用的 ASP.NET 2.0在集成模式下的IIS7


  

      
  1. ASP.NET线程设置不用于控制集成模式的请求的并发

  2.   

  
  

该minFreeThreads,
  minLocalRequestFreeThreads设置在
  对System.Web /的httpRuntime
  配置部分和
  maxWorkerThreads在设置
  中processModel配置部分没有
  无法控制的线程机制
  ASP.NET使用。相反,ASP.NET
  依赖于IIS线程池,
  允许您控制的最大
  同时执行数
  通过设置请求
  MaxConcurrentRequestsPerCPU DWORD
  值(默认为12)位于
  HKEY_LOCAL_MACHINE \\ SOFTWARE \\微软\\ ASP.NET \\ 2.0.50727.0
  键。此设置是全局,不能
  改变个人申请
  池或应用程序。解决方法


  
  

一个。为了控制并发的
  应用程序,设置
  MaxConcurrentRequestsPerCPU设置。


Currently we are developing an ASMX, ASP 2.0, IIS 7 web service that does some calculations (and return a dynamically generated document) and will take approx. 60 seconds to run.

Since whe have a big machine with multiple cores and lots of RAM, I expected that IIS tries its best to route the requests that arrive in its requests queue to all available threads of the app pool's thread pool.

But we experience quiet the opposite:

When we issue requests to the ASMX web service URL from multiple different clients, the IIS seems to serially process these requests. I.e. request 1 arrives, is being processed, then request 2 is being processed, then request 3, etc.

Question:

Is it possible (without changing the C# code of the web service) to configure IIS to process requests in parallel, if enough threads are available?

If yes: how should I do it?
It no: any workarounds/tips?

解决方案

Make sure you have the "Maximum Worker process" for the application pool set to > 1 to enable the worker pool to become a Web Garden. By default each application pool is set to only use one process, which would cause requests to be queued.

You may also want to look at this article about using ASP.NET 2.0 in Integrated mode on IIS7

  1. ASP.NET threading settings are not used to control the request concurrency in Integrated mode

The minFreeThreads, minLocalRequestFreeThreads settings in the system.web/httpRuntime configuration section and the maxWorkerThreads setting in the processModel configuration section no longer control the threading mechanism used by ASP.NET. Instead, ASP.NET relies on the IIS thread pool and allows you to control the maximum number of concurrently executing requests by setting the MaxConcurrentRequestsPerCPU DWORD value (default is 12) located in the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0 key. This setting is global and cannot be changed for individual application pools or applications. Workaround

A. To control the concurrency of your application, set the MaxConcurrentRequestsPerCPU setting.

这篇关于是否可以告诉IIS 7并行处理的请求队列?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆