Establecer la opción de configuración del servidor Máximo de subprocesos de trabajoConfigure the max worker threads Server Configuration Option

SE APLICA A: síSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

En este tema se describe cómo establecer la opción de configuración del servidor máximo de subprocesos de trabajo en SQL ServerSQL Server mediante SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic describes how to configure the max worker threads server configuration option in SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. La opción de máximo de subprocesos de trabajo configura el número de subprocesos de trabajo disponibles para los procesos de SQL ServerSQL Server .The max worker threads option configures the number of worker threads that are available to SQL ServerSQL Server processes. SQL ServerSQL Server usa los servicios de subprocesos nativos de los sistemas operativos de forma que uno o varios subprocesos admitan cada red que SQL ServerSQL Server admite de forma simultánea, otro subproceso controle los puntos de comprobación de la base de datos y un grupo de subprocesos controle a todos los usuarios.uses the native thread services of the operating systems so that one or more threads support each network that SQL ServerSQL Server supports simultaneously, another thread handles database checkpoints, and a pool of threads handles all users. El valor predeterminado de máximo de subprocesos de trabajo es 0.The default value for max worker threads is 0. Esto permite a SQL ServerSQL Server configurar automáticamente el número de subprocesos de trabajo en el inicio.This enables SQL ServerSQL Server to automatically configure the number of worker threads at startup. El valor predeterminado es el más adecuado para la mayor parte de los sistemas.The default setting is best for most systems. No obstante, dependiendo de la configuración del sistema, el uso de un valor concreto para máximo de subprocesos de trabajo en ocasiones puede mejorar el rendimiento.However, depending on your system configuration, setting max worker threads to a specific value sometimes improves performance.

En este temaIn This Topic

Antes de comenzarBefore You Begin

Limitaciones y restriccionesLimitations and Restrictions

  • Si el número real de solicitudes de consulta es inferior al número establecido en la opción de máximo de subprocesos de trabajo, un subproceso controla cada solicitud de consulta.When the actual number of query requests is less than the amount set in max worker threads, one thread handles each query request. Sin embargo, si el número real de solicitudes de consulta es superior al número establecido en máximo de subprocesos de trabajo, SQL ServerSQL Server agrupa los subprocesos de trabajo de manera que el siguiente subproceso de trabajo disponible pueda controlar la solicitud.However, if the actual number of query request exceeds the amount set in max worker threads, SQL ServerSQL Server pools the worker threads so that the next available worker thread can handle the request.

RecomendacionesRecommendations

  • Esta opción es avanzada y solo debe cambiarla un administrador de base de datos con experiencia o un profesional certificado de SQL ServerSQL Server.This option is an advanced option and should be changed only by an experienced database administrator or certified SQL ServerSQL Server professional. Si sospecha que hay un problema de rendimiento, probablemente no se deba a la disponibilidad de subprocesos de trabajo.If you suspect that there is a performance problem, it is probably not the availability of worker threads. La causa más probable es que haya alguna E/S que haga que los subprocesos de trabajo esperen.The cause is more likely something like I/O that is causing the worker threads to wait. Lo mejor es buscar la causa principal de un problema de rendimiento antes de cambiar el valor de configuración de máximo de subprocesos de trabajo.It is best to find the root cause of a performance issue before you change the max worker threads setting.

  • La agrupación de subprocesos permite optimizar el rendimiento cuando un gran número de clientes se conecta al servidor.Thread pooling helps optimize performance when large numbers of clients are connected to the server. Normalmente, se crea un subproceso del sistema operativo independiente para cada solicitud de la consulta.Usually, a separate operating system thread is created for each query request. 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.However, with hundreds of connections to the server, using one thread per query request can consume large amounts of system resources. La opción de máximo de subprocesos de trabajo permite que SQL ServerSQL Server cree un grupo de subprocesos de trabajo para atender un gran número de solicitudes de consulta, lo que mejora el rendimiento.The max worker threads option enables SQL ServerSQL Server to create a pool of worker threads to service a larger number of query requests, which improves performance.

  • En la siguiente tabla se muestra el número configurado automáticamente de máximo de subprocesos de trabajo para diferentes combinaciones de CPU y versiones de SQL ServerSQL Server.The following table shows the automatically configured number of max worker threads for various combinations of CPUs and versions of SQL ServerSQL Server.

    Número de CPUNumber of CPUs Equipo de 32 bits32-bit computer Equipo de 64 bits64-bit computer
    <= 4 procesadores<= 4 processors 256256 512512
    8 procesadores8 processors 288288 576576
    16 procesadores16 processors 352352 704704
    32 procesadores32 processors 480480 960960
    64 procesadores64 processors 736736 14721472
    128 procesadores128 processors 42244224 44804480
    256 procesadores256 processors 83208320 85768576

    Con la siguiente fórmula:Using the following formula:

    Número de CPUNumber of CPUs Equipo de 32 bits32-bit computer Equipo de 64 bits64-bit computer
    <= 4 procesadores<= 4 processors 256256 512512
    > 4 procesadores y < 64 procesadores> 4 processors and < 64 processors 256 + ((CPU lógicas - 4) * 8)256 + ((logical CPU's - 4) * 8) 512 + [(CPU lógicas - 4) * 16]512 + ((logical CPU's - 4) * 16)
    > 64 procesadores> 64 processors 256 + [(CPU lógicas - 4) * 32]256 + ((logical CPU's - 4) * 32) 512 + [(CPU lógicas - 4) * 32]512 + ((logical CPU's - 4) * 32)

    Nota

    SQL ServerSQL Server ya no se puede instalar en un sistema operativo de 32 bits.can no longer be installed on a 32-bit operating system. Se muestran los valores de equipo de 32 bits como ayuda para los clientes que ejecutan SQL Server 2014 (12.x)SQL Server 2014 (12.x) y versiones anteriores.32-bit computer values are listed for the assistance of customers running SQL Server 2014 (12.x)SQL Server 2014 (12.x) and earlier. Se recomienda 1024 como número máximo de subprocesos de trabajo para una instancia de SQL ServerSQL Server que se ejecuta en un equipo de 32 bits.We recommend 1,024 as the maximum number of worker threads for an instance of SQL ServerSQL Server that is running on a 32-bit computer.

    Nota

    Para obtener recomendaciones sobre el uso de más de 64 CPU, vea Prácticas recomendadas para ejecutar SQL Server en equipos que tienen más de 64 CPU.For recommendations on using more than 64 CPUs, refer to Best Practices for Running SQL Server on Computers That Have More Than 64 CPUs.

  • Si todos los subprocesos de trabajo están activos con consultas de ejecución prolongada, puede parecer que SQL ServerSQL Server no responde hasta que finaliza un subproceso de trabajo y vuelve a estar disponible.When all worker threads are active with long running queries, SQL ServerSQL Server might appear unresponsive until a worker thread completes and becomes available. Aunque no se trata de un defecto, puede que a veces este comportamiento no sea deseable.Although this is not a defect, it can sometimes be undesirable. Si un proceso parece no responder y no se pueden procesar nuevas consultas, conéctese a SQL ServerSQL Server mediante la conexión de administrador dedicada (DAC) y finalice el proceso.If a process appears to be unresponsive and no new queries can be processed, then connect to SQL ServerSQL Server using the dedicated administrator connection (DAC), and kill the process. Para impedir este comportamiento, aumente el número máximo de subprocesos de trabajo.To prevent this, increase the number of max worker threads.

La opción de configuración del servidor Máximo de subprocesos de trabajo no limita todos los subprocesos que pueden generarse en el sistema.The max worker threads server configuration option does not limit all threads that may be spanwed in the system. Los subprocesos necesarios para tareas como grupos de disponibilidad, Service Broker, administrador de bloqueos u otras se generan fuera de este límite.Threads required for tasks such as Availibility Groups, Service Broker, Lock Manager, or others are spawned outside this limit. Si se supera el número de subprocesos configurados, la siguiente consulta proporcionará información sobre las tareas del sistema que han creado los subprocesos adicionales.If the number of threads configured is being exceeded, the following query will provide information about the system tasks that have spawned the additional threads.

SELECT  s.session_id, r.command, r.status,  
   r.wait_type, r.scheduler_id, w.worker_address,  
   w.is_preemptive, w.state, t.task_state,  
   t.session_id, t.exec_context_id, t.request_id  
FROM sys.dm_exec_sessions AS s  
INNER JOIN sys.dm_exec_requests AS r  
   ON s.session_id = r.session_id  
INNER JOIN sys.dm_os_tasks AS t  
   ON r.task_address = t.task_address  
INNER JOIN sys.dm_os_workers AS w  
   ON t.worker_address = w.worker_address  
WHERE s.is_user_process = 0;  

SeguridadSecurity

PermisosPermissions

De forma predeterminada, todos los usuarios tienen permisos de ejecución en sp_configure sin ningún parámetro o solo con el primero.Execute permissions on sp_configure with no parameters or with only the first parameter are granted to all users by default. Para ejecutar sp_configure con ambos parámetros y cambiar una opción de configuración, o para ejecutar la instrucción RECONFIGURE, un usuario debe tener el permiso ALTER SETTINGS en el servidor.To execute sp_configure with both parameters to change a configuration option or to run the RECONFIGURE statement, a user must be granted the ALTER SETTINGS server-level permission. Los roles fijos de servidor sysadmin y serveradmin tienen el permiso ALTER SETTINGS de forma implícita.The ALTER SETTINGS permission is implicitly held by the sysadmin and serveradmin fixed server roles.

Usando SQL Server Management StudioSQL Server Management StudioUsing SQL Server Management StudioSQL Server Management Studio

Para configurar la opción de máximo de subprocesos de trabajoTo configure the max worker threads option

  1. En el Explorador de objetos, haga clic con el botón derecho en un servidor y seleccione Propiedades.In Object Explorer, right-click a server and select Properties.

  2. Haga clic en el nodo Procesadores .Click the Processors node.

  3. En el cuadro Máximo de subprocesos de trabajo, escriba o seleccione un valor entre 128 y 32 767.In the Max worker threads box, type or select a value from 128 through 32,767.

Sugerencia

Utilice la opción max worker threads para configurar el número de subprocesos de trabajo disponibles para procesos de SQL ServerSQL Server .Use the max worker threads option to configure the number of worker threads available to SQL ServerSQL Server processes. El valor predeterminado de la opción max worker threads es el óptimo para la mayor parte de los sistemas.The default setting for max worker threads is best for most systems. No obstante, dependiendo de la configuración del sistema, el uso de un valor inferior para el máximo de subprocesos de trabajo puede mejorar el rendimiento a veces.However, depending on your system configuration, setting max worker threads to a smaller value sometimes improves performance. Vea las Recomendaciones en esta página para obtener más información.See Recommendations in this page for more information.

Usar Transact-SQLUsing Transact-SQL

Para configurar la opción de máximo de subprocesos de trabajoTo configure the max worker threads option

  1. Conéctese al Motor de base de datosDatabase Engine.Connect to the Motor de base de datosDatabase Engine.

  2. En la barra Estándar, haga clic en Nueva consulta.From the Standard bar, click New Query.

  3. Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar.Copy and paste the following example into the query window and click Execute. En este ejemplo se muestra cómo usar sp_configure para configurar la opción max worker threads en 900.This example shows how to use sp_configure to configure the max worker threads option to 900.

USE AdventureWorks2012 ;  
GO  
EXEC sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE ;  
GO  
EXEC sp_configure 'max worker threads', 900 ;  
GO  
RECONFIGURE;  
GO  

Seguimiento: Después de configurar la opción de máximo de subprocesos de trabajoFollow Up: After you configure the max worker threads option

El cambio se aplicará inmediatamente después de ejecutar RECONFIGURE, sin necesidad de reiniciar Motor de base de datosDatabase Engine.The change will take effect immediately after executing RECONFIGURE, without requiring the Motor de base de datosDatabase Engine to restart.

Consulte tambiénSee Also

Opciones de configuración de servidor (SQL Server) Server Configuration Options (SQL Server)
RECONFIGURE (Transact-SQL) RECONFIGURE (Transact-SQL)
sp_configure (Transact-SQL) sp_configure (Transact-SQL)
Conexión de diagnóstico para administradores de bases de datosDiagnostic Connection for Database Administrators