2010-11-30 19 views
5

Según this documentación en MSDN para ProcessModel, los autoConfig = true conjuntos de los siguientes atributos de acuerdo con esta KB artículo:ASP .NET ProcessModel configuración

maxWorkerThreads, maxIoThreads, minFreeThreads, minLocalRequestFreeThreads, maxConnection

Para comprobar esta configuración, tengo una aplicación de ejemplo web en ASP .NET 3.5 que tiene el código siguiente en el evento Page_Load:

 int w, c; 

     ThreadPool.GetMinThreads(out w, out c); 

     // Write the numbers of minimum threads 
     Response.Write("Min: " + string.Format("{0}, {1}", w, c)); 

     w=0; 
     c = 0; 

     ThreadPool.GetMaxThreads(out w, out c); 

     Response.Write(" Max: " + string.Format("{0}, {1}", w, c)); 

     Response.Write(" Maxconnections: " + ServicePointManager.DefaultConnectionLimit); 

     Configuration conf = ConfigurationManager.OpenMachineConfiguration(); 
     ConfigurationSectionGroup secGrp = conf.SectionGroups["system.web"]; 
     ConfigurationSection sec = secGrp.Sections["httpRuntime"]; 
     Response.Write(" httpruntime settings: " + sec.ElementInformation.Properties["minFreeThreads"].Value + ", " + 
                sec.ElementInformation.Properties["minLocalRequestFreeThreads"].Value); 

     Response.Flush(); 

consigo el Follo salida de ala cuando funciono a la página con autoConfig establece en false primero y luego establece en true:

autoConfig = false: Min: 2, 2 Max: 40, 40 MaxConnections: 10 ajustes httpRuntime: 8, 4

autoConfig = true: Min: 2, 2 Max: 200, 200 Maxconnections: 24 httpruntime settings: 8, 4

autoConfig = false funciona como se espera y los valores predeterminados se pueden ver en la salida, sin embargo, la salida se establece en verdadero me sorprendió un poco:

  1. Establece el maxWorkerThreads y maxIoThrea ds atributos correctamente y por lo tanto la salida de 200 (100x2 en una CPU de doble núcleo).
  2. Sin embargo, no parece establecer los minWorkerThreads atribuyen el cual según la KB debe ser: MinWorkerThreads = maxWorkerThreads/2
  3. También, de acuerdo a la documentación de MSDN establecer autoConfig = true sí establece los minFreeThreads y minLocalRequestFreeThreads atribuyen a valores recomendados en la KB, pero tampoco parece ser el caso. Obtengo los valores predeterminados de 8 y 4.

Estoy un poco confundido, ¿alguna idea de lo que está sucediendo aquí? ¿Tengo la muestra mal o algo así?

+0

Estoy tratando de mejorar el rendimiento de mi servicio web (actualmente obtengo una carga de CPU del 100% para solo unos pocos usuarios) y me encontré con el mismo problema. Obtengo 20 para MaxWorkerThreads cuando AutoConfig está habilitado. – R4cOON

+0

Estoy ejecutando la aplicación ASP.NET 3.5 en IIS6 en la máquina de doble núcleo y estoy obteniendo los mismos resultados que usted. –

+0

Algo anda mal, no estoy seguro de qué? ¡Terminamos retocando la configuración manualmente en web.config después de configurar el atributo AutoConfig en falso! – Metallikanz

Respuesta

0

Mi conjetura es que está tratando con el mismo tipo de lógica a continuación:

WCF 4: Higher Default Throttling Settings for WCF Services

En WCF 4, hemos revisado los valores por defecto de estos ajustes para que las personas no tienen que cambiar el valores predeterminados en la mayoría de los casos. Estas son las principales cambios:

· MaxConcurrentSessions: por defecto es 100 * ProcessorCount

· MaxConcurrentCalls: por defecto es 16 * ProcessorCount

· MaxConcurrentInstances: default es el total de los dos anteriores, que sigue el mismo patrón que antes.