Cómo afinar el Scheduler de Bizagi en entornos de clúster

<< Clic para mostrar Tabla de Contenidos >>

Navegación:  Automation Server > Automation Server - configuración y administración > Mantenimiento y monitoreo del sistema > Configuración y administración del ambiente > Managment Console > Administración de los trabajos programados >

Cómo afinar el Scheduler de Bizagi en entornos de clúster

Introducción

La configuración de Bizagi Scheduler para un mejor rendimiento depende de la configuración de cada entorno. Depende de tres factores: la infraestructura del cliente, el paralelismo y el modelado del cliente. La mejor práctica al ajustar su Bizagi Scheduler es incluir tareas de verificación de rendimiento que funcionen junto con las pruebas de carga. Esto permite que la configuración precisa del Scheduler obtenga la mejor combinación en la que el rendimiento es óptimo.

 

El siguiente documento presenta una breve explicación de las teclas utilizadas para hacer un ajuste fino del Programador. Además, le proporciona detalles sobre los Schedulers master y slave, y detalles sobre cómo puede ajustar el rendimiento para su entorno de producción.

 

Definiciones

Tenga en cuenta las siguientes definiciones:

Un Scheduler Master se encargar de coordinar las tareas ejecutadas por cada Scheduler Slave y ejecuta tareas adicionales como las tareas de mantenimiento. Es obligatorio tener uno y solo un Scheduler Master configurado.

Un Scheduler Slave se encarga de procesar una tarea asignada.

Un núcleo (core en inglés) es la unidad de procesador dentro de una CPU.

Los núcleos de procesador son los núcleos físicos en la CPU. Por ejemplo, si un servidor tiene un procesador QUAD-CORE tiene cuatro núcleos.

Los hilos (threads en inglés) son la versión virtual del núcleo de una CPU ejecutando una instrucción.

El procesador lógico, o núcleos lógicos, es el resultado del número de núcleos multiplicado por el número de hilos que se pueden ejecutar en cada núcleo. Esto se conoce como HyperThreading. Por ejemplo, si se tiene un procesador QUAD-CORE, con dos hilos por núcleo, se tendrían ocho procesadores lógicos o núcleos lógicos.

El multithreading es la capacidad de ejecutar varias instrucciones al tiempo. Esto se logra de las siguientes maneras: usando varios núcleos o con HyperThreading.

 

A continuación hay un ejemplo de las definiciones:

 

Scheduler_05

 

Archivos de configuración

Para ajustar el Bizagi Scheduler, localice estos archivos:

 

Localice el archivo web.config ubicado en C:\Bizagi\Projects\[NombreProyecto]\WebApplication y ábralo usando el editor de texto de su elección.

 

FineTune_01

 

Localice los archivos BizAgi.Scheduler.Services.exe.config ubicados en la carpeta C:\Bizagi\Projects\[ProjectName]\Scheduler de cada scheduler.

 

FineTune_02

 

Agregue las llaves de configuración necesarias para afinar su Bizagi Scheduler in the <appsettings> key. Ejemplo:

<add key="AsyncTaskWorkingSetSize" value="10"/>

 

Llaves de configuración

De acuerdo con la infraestructura de su proyecto, tenga en cuenta la siguiente configuración mínima:

 

 

Llave de configuración

Descripción

Valores por defecto

Sugerencias

Configuración de Scheduler de hilos

ID_STACK_SIZE

Agregue está llave en los archivos web.config y BizAgi.Scheduler.Services.exe.config de cada scheduler. La llave reduce los bloqueos en la asignación de ID de negocio durante las altas tasas de creación de casos.

El valor por defecto es 50.

Este valor nuca debe ser disminuido y cada Scheduler debe tener el mismo valor.

AsynchTaskWorkingSetSize

Agregue está llave en el archivo BizAgi.Scheduler.Services.exe.config de cada scheduler. Esta llave define el número de tareas asíncronas a ser recuperada de la base de datos para ser procesado por hilo.

El valor por defecto es 50.

El Scheduler revisa dentro de cada intervalo si hay tareas adicionales para ejecutar.

 

Si este valor es muy bajo para la demanda de tareas esperada por el Scheduler, el Scheduler necesitará de más iteraciones para obtener todas las tareas pendientes.

SchedulerAsyncProcessorIntervalInMillis

Agregue está llave en el archivo BizAgi.Scheduler.Services.exe.configde cada scheduler. Esta llave establece el tiempo en milisegundos que definen los hilos en el procesador del scheduler interno para esperar la próxima ejecución de las tareas asíncronas cuando se ejecutó el BizagiSchedulerInterval.

El valor sugerido es 500.

Si el tamaño de la bolsa de tareas incrementa para las actividades asíncronas, el valor del intervalo debe aumentar. Esto permite procesar más tareas en un intervalo mayor por ciclo.

 

Si el intervalo es muy largo, se pierde tiempo de procesamiento y el número de tareas pendientes puede incrementar.

JobWorkingSetSize

Agregue está llave en el archivo BizAgi.Scheduler.Services.exe.configde cada scheduler. Esta llave define el número de tareas de la pila que se proporcionarán para ser ejecutadas.

El valor sugerido es 10.

El Scheduler revisa dentro de cada intervalo si hay tareas adicionales para ejecutar.

 

Si este valor es muy bajo para la demanda de tareas esperada por el Scheduler, el Scheduler necesitará de más iteraciones para obtener todas las tareas pendientes.

SchedulerMaxJobWaitInterval

Agregue está llave en el archivo BizAgi.Scheduler.Services.exe.configde cada scheduler. Esta llave define el número de tiempo de ejecución de espera cuando se alcanza el número máximo de trabajos.

El valor sugerido es 1.

Si el tamaño de la bolsa de tareas incrementa para las actividades asíncronas, el valor del intervalo debe aumentar. Esto permite procesar más tareas en un intervalo mayor por ciclo. También depende de la llave JobWorkingSize.

 

Si el intervalo es muy largo, se pierde tiempo de procesamiento y el número de tareas pendientes puede incrementar.

LaunchThreadForLog

Agregue está llave en el archivo BizAgi.Scheduler.Services.exe.config de cada scheduler. Esta llave defines you need an extra thread to improve the logging.

El valor sugerido es 1.

Cuando hay deadlocks en la escritura del log, el valor puede cambiar a 0.

Habilitar una opción para cada función

MaxThreadsForCustomJobs

Agregue está llave en el archivo BizAgi.Scheduler.Services.exe.config de cada scheduler. Esta llave define el número máximo de hilos para ejecutar los trabajos personalizados.

El valor por defecto es 2.

Tenga en cuenta que este número NO PUEDE exceder el número de hilos de procesador. Por ejemplo, si tiene dos procesadores de cuatro núcleos que pueden ejecutar dos hilos por núcleo, el número máximo debe ser 16.

 

Este valor debe tener el cuenta sus recursos de hardware y la frecuencia de ejecución de tareas del Scheduler.

MaxThreadsForJobs

Agregue está llave en el archivo BizAgi.Scheduler.Services.exe.config de cada scheduler. Esta llave define el número máximo de hilos para ejecutar los trabajos.

El valor por defecto es 2.

Tenga en cuenta que este número NO PUEDE exceder el número de hilos de procesador. Por ejemplo, si tiene dos procesadores de cuatro núcleos que pueden ejecutar dos hilos por núcleo, el número máximo debe ser 16.

 

Este valor debe tener el cuenta sus recursos de hardware y la frecuencia de ejecución de tareas del Scheduler.

MaxThreadsForAsyncEcm

Agregue está llave en el archivo BizAgi.Scheduler.Services.exe.config de cada scheduler. Esta llave define el número máximo de hilos para ejecutar el ECM cuando la función asíncrona está activa.

El valor por defecto es 2.

Tenga en cuenta que este número NO PUEDE exceder el número de hilos de procesador. Por ejemplo, si tiene dos procesadores de cuatro núcleos que pueden ejecutar dos hilos por núcleo, el número máximo debe ser 16.

 

Este valor debe tener el cuenta sus recursos de hardware y la frecuencia de ejecución de tareas del Scheduler.

MaxThreadsForAsynchWorkitems

Agregue está llave en el archivo BizAgi.Scheduler.Services.exe.config de cada scheduler. Esta llave define el número máximo de hilos para ejecutar las tareas asíncronas.

El valor por defecto es 10.

Tenga en cuenta que este número NO PUEDE exceder el número de hilos de procesador. Por ejemplo, si tiene dos procesadores de cuatro núcleos que pueden ejecutar dos hilos por núcleo, el número máximo debe ser 16.

 

Este valor debe tener el cuenta sus recursos de hardware y la frecuencia de ejecución de tareas del Scheduler.

Intervalo de ejecución del Scheduler

BizagiSchedulerInterval

Agregue está llave en el archivo BizAgi.Scheduler.Services.exe.config de cada scheduler. Esta llave define el tiempo (en segundos) utilizado por Bizagi para procesar las tareas que vienen de la base de datos.

El valor por defecto es 30.

 

Si el tamaño de la bolsa de tareas incrementa para las actividades asíncronas, el valor del intervalo debe aumentar. Esto permite procesar más tareas en un intervalo mayor por ciclo.

 

Si el intervalo es muy largo, se pierde tiempo de procesamiento y el número de tareas pendientes puede incrementar.

MASTER / SLAVE

DisableAsynchCaseClosing

Agregue está llave en el archivo BizAgi.Scheduler.Services.exe.config de cada scheduler. Esta llave se usa para nombrar al scheduler principal y garantizar que este sea el único que ejecuta las tareas de mantenimiento.

El valor por defecto es 0.

Configure 0 para el Master scheduler y 1 para el Slave scheduler. Es obligatorio tener uno y solo un programador maestro configurado.

DisableInterfaceErrorLogger

Agregue está llave en el archivo BizAgi.Scheduler.Services.exe.config de cada scheduler. Esta llave se usa para habilitar el registrador de errores de interfaz solo en el scheduler principal y garantizar que este sea el único que registre todos los errores de interfaz.

El valor por defecto es 0.

Configure 0 para el Master scheduler y 1 para el Slave scheduler. Es obligatorio tener uno y solo un programador maestro configurado.

 

Afinando el Scheduler

El ajuste de los valores para las llaves mostradas debe realizarse de acuerdo con los resultados de la fase de prueba de rendimiento de su proyecto. Siga estas recomendaciones para ajustar el rendimiento:

 

Se recomienda tener una máquina independiente para los Schedulers.

El rendimiento ideal ocurre cuando el número de workitems asíncronos (llave MaxThreadsForAsynchWorkitems) se procesa en la franja definida por el intervalo de Bizagi Scheduler (llave BizagiSchedulerInterval). Aumente los valores de las llaves AsynchTaskWorkingSetSize y BizagiSchedulerInterval hasta que sus tareas asíncronas se procesen en un tiempo óptimo.

Si alcanza el valor máximo para la llave MaxThreadsForAsynchWorkitems, se recomienda agregar otro Scheduler usando los valores predeterminados y luego, aumentar los valores hasta que tenga el rendimiento ideal.

 

note_pin

Se recomienda realizar un monitoreo continuo de su infraestructura. Si encuentra algún aumento en términos de uso de la memoria o la CPU, debe tomar la decisión si desea ajustar los programadores o realizar cambios en la infraestructura para poder soportar la mayor demanda de recursos.