Número de subprocesos

Microsoft.SQLServer.2008.DBEngine.ThreadCountMonitor (UnitMonitor)

Número de subprocesos para el motor de base de datos de 2008

Knowledge Base article:

Resumen

SQL Server inicia normalmente un subproceso del sistema para cada solicitud de consulta, pero si la cantidad de subprocesos supera el valor especificado de Máximo de subprocesos de trabajo, SQL Server agrupa los subprocesos de trabajo. Si todos los subprocesos de trabajo están activos con consultas de ejecución prolongada, puede parecer que SQL Server no responde hasta que finaliza un subproceso de trabajo y vuelve a estar disponible. Aunque no se trata de un defecto, puede que a veces este comportamiento no sea deseable. El monitor analiza la cantidad de subprocesos disponibles y notifica si la cantidad es baja.

Causas

Un aumento de la cantidad de trabajo que ocasiona un aumento de subprocesos utilizados podría indicar que SQL Server está trabajando con carga significativa o que un número excesivo de consultas se ejecuta en paralelo.

Soluciones

El ajuste de Máximo de subprocesos de trabajo es una opción avanzada y solo debe cambiarla un administrador de base de datos con experiencia o un técnico de SQL Server con la titulación apropiada.

La agrupación de subprocesos permite optimizar el rendimiento cuando un gran número de clientes se conecta al servidor. Normalmente, se crea un subproceso del sistema operativo independiente para cada solicitud de la consulta. Sin embargo, cuando hay cientos de conexiones al servidor, el uso de un subproceso por solicitud de consulta puede consumir grandes cantidades de recursos del sistema. La opción Máximo de subprocesos de trabajo permite que SQL Server cree un grupo de subprocesos de trabajo para atender un gran número de solicitudes de consulta, lo que mejora el rendimiento.

max worker threads (opción)

http://msdn.microsoft.com/es-es/library/ms187024(v=sql.100).aspx

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.DBEngine.ThreadCount.MonitorType
RemotableTrue
AccessibilityPublic
Alert Message
El número de subprocesos del motor de base de datos de SQL 2008 es demasiado alto
El número de subprocesos de la instancia de SQL "{0}" en el equipo “{1}” es demasiado alto. Vea la pestaña "Contexto de alerta" para obtener más detalles.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2008.DBEngine.ThreadCountMonitor" Accessibility="Public" Enabled="true" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.DBEngine.ThreadCount.MonitorType" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.DBEngine.ThreadCountMonitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL!Microsoft.SQLServer.ServerRole"]/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Normal" MonitorTypeStateID="Normal" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ServiceName>$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$</ServiceName>
<IntervalSeconds>300</IntervalSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<MinFreeThreadsCount>10</MinFreeThreadsCount>
<NumSamples>6</NumSamples>
</Configuration>
</UnitMonitor>