ThingWorx Flow > Instalación y configuración > Configuración de ThingWorx Flow > Ajuste y escala del motor de ThingWorx Flow
Ajuste y escala del motor de ThingWorx Flow
En el servicio del motor de ThingWorx Flow se incluyen varias opciones de configuración que pueden afectar excesivamente al rendimiento de ThingWorx Flow y a su ejecución de los flujos de trabajo. Estas opciones se encuentran en el fichero deploymentConfig.json del módulo del motor. El fichero deploymentConfig.json del motor de ejemplo es el siguiente:
{
"MAX_FLOW_RUN_TIME": 180000, // Only allows a workflow to run for up to 3 minutes.
"EXCHANGE_STATUS_CHECK_INTERVAL": 120000, // Checks if it can communicate with the Exchange service every 2 minutes.
"REFRESH_ON_INTERVAL_MINUTES": 60,
"ENGINE_PORT": 2006, // The port Engine will reserve for health check purposes
"ENGINE_HOST": "localhost", // The hostname Engine will reserve the port against
"SLEEP_BETWEEN_FLOW_EXECUTION": 3000, // Waits 3 seconds before a worker can execute the next workflow
"ENGINE_DATA_PATH": "C:/ThingWorxOrchestration/modules/cache", // Location where files are stored during workflow execution. Files are deleted once the workflow execution is complete.
"EXCHANGE": { // The host and port for the Exchange service that this Engine should communicate with
"HOST": "localhost",
"PORT": "7822"
},
"logLevel":"error", // valid levels are 'trace', 'debug', 'info', 'warn', and 'error'; default is 'error'
"QUEUE": {
"MAX_SOCKET": 100,
"QUEUE_CONSUMPTION_UNIT": {
"256": 1
},
"DEFAULT_FLOW_QUEUE": "256",
"ACTIVE_ADAPTER_DEFAULT": "amqp",
"ACTIVE_ADAPTER_FLOW": "amqp",
"ACTIVE_ADAPTER_STOP": "amqp",
"ACTIVE_ADAPTER_WEBHOOK": "amqp",
"ADAPTERS": {
"AMQP": {
"CONFIG": { // The host and port for the RabbitMQ server
"port": "5672",
"protocol": "amqp",
"host": "localhost",
"vhost": "orchestration",
"CHANNEL_MAX_FETCH": "5" // The maximum number of messages this Engine will fetch from the queue
},
"FLOW_QUEUE": {
"QUEUE_NAMES": {
"256m": "256mb"
},
"QUEUE_NAME": "256mb"
}
}
}
}
}
Si se cambia cualquiera de estas opciones de configuración, se debe reiniciar el servicio de ThingWorxFlow mediante las herramientas nativas de control de servicios para el sistema operativo (Services o sc para Windows, sysctl para Red Hat Enterprise Linux).
En la siguiente tabla se describen las opciones de configuración pertinentes y se proporcionan recomendaciones sobre cómo configurarlas según el entorno y los recursos del sistema.
Opciones de configuración
Descripción
Recomendaciones
CHANNEL_MAX_FETCH:
Rendimiento de la ejecución
Tipo: entero
Por defecto: 10
Unidades: mensajes totales
Permite controlar el número máximo de mensajes de ejecución del flujo de trabajo que el servicio del motor gestionará. ThingWorx Foundation transmite estos mensajes cada vez que se ejecuta un servicio de Flujo de trabajo, incluidos los flujos de trabajo independientes que se ejecutan manualmente o que utilizan un activador. Si se reduce este número, se limita el número de flujos de trabajo que el motor puede ejecutar simultáneamente.
Para los entornos de desarrollo, este valor se debe definir para que coincida con el número de núcleos del sistema.
Para los entornos de producción, este valor se debe definir entre el 50 % y el 200 % del número de núcleos, en función del número de otros servicios que se ejecutan en el mismo ordenador.
ENGINE_SIZE:
Asignación de memoria del convertidor
Tipo: entero
Por defecto: 1802
Unidades: megabytes (10.242 bytes)
Representa la cantidad máxima de memoria en megabytes que un proceso de convertidor del motor puede asignar para los objetos. Al configurar este valor, se deben tener en cuenta los siguientes factores:
Número de actividades en un flujo de trabajo.
Complejidad de las expresiones en línea o las acciones de Node.js.
Cantidad de datos recuperados o procesados por acción.
Para los entornos de desarrollo, se debe dejar en su valor por defecto.
Para los entornos de producción, defina el valor de ENGINE_SIZE para que sea aproximadamente la cantidad máxima de RAM del sistema dividida entre el valor utilizado para CHANNEL_MAX_FETCH.
MAX_FLOW_RUN_TIME:
Tiempo de ejecución máximo
Tipo: entero
Por defecto: 300.000
Unidades: milisegundos
Permite controlar la cantidad total de tiempo en milisegundos que un flujo de trabajo puede ejecutar por ejecución. Esta configuración impide que un convertidor del motor ejecute un flujo de trabajo durante un período de tiempo excesivo. Este valor varía en función de la implementación y del entorno de red presente. Sin embargo, se recomienda mantener este valor bajo para que evitar que los convertidores permanezcan no disponibles durante períodos de tiempo prolongados, ya que esto puede provocar una degradación del rendimiento general del flujo de ThingWorx Flow. Es necesario lograr un equilibrio adecuado entre proporcionar tiempo suficiente para que el flujo de trabajo finalice la ejecución y mantener el valor suficientemente bajo, de modo que los convertidores del motor estén disponibles lo antes posible.
Para los entornos de desarrollo, se debe dejar en su valor por defecto o cambiar a un período de tiempo mayor si fuera necesario, con fines de depuración.
Para los entornos de producción, se debe definir el valor en la longitud más larga del flujo de trabajo de ejecución más un 15 %.
SLEEP_BETWEEN_FLOW_EXECUTION:
Período de recuperación del convertidor
Tipo: entero
Por defecto: 3.000
Unidades: milisegundos
Permite insertar una demora adicional en milisegundos antes de que un convertidor del motor pueda ejecutar un flujo de trabajo. Esto se destina principalmente a permitir que el sistema operativo reclame memoria de los convertidores del motor eliminados, lo que permite una mayor seguridad en los entornos que no requieren que el espacio de memoria se comparta entre las ejecuciones de flujos de trabajo.
Para los entornos de desarrollo y la mayoría de los entornos de producción, este valor se debe definir en 0.
Para entornos de varios inquilinos con información confidencial que no se puede entremezclar, se debe dejar con el valor por defecto o aumentar según sea necesario.
No hay ningún valor que garantice que el sistema operativo haya reciclado correctamente la memoria.
KILL_WORKER_AFTER_RUN:
Detención de los convertidores del motor después de ejecutar el flujo de trabajo
Tipo: booleano
Por defecto: false
Siempre que se ejecuta un flujo de trabajo, el servicio del motor crea un proceso de convertidor que controla la ejecución real del flujo de trabajo, hasta el valor definido por CHANNEL_MAX_FETCH. Por defecto, los procesos de convertidor siguen activos para atender solicitudes de ejecución adicionales. Esta configuración modifica el comportamiento de modo que, una vez finalizada la ejecución del flujo de trabajo, se anula el proceso de convertidor.
Para los entornos de desarrollo y la mayoría de los entornos de producción, este valor se debe dejar en su valor por defecto.
Para entornos de varios inquilinos que tienen información confidencial que no se puede entremezclar, se recomienda definir esta opción en verdadero.
AVAILABLE_WORKER_CHECK_TRIES:
Número de reintentos de disponibilidad del convertidor
Tipo: entero
Por defecto: 10
Unidades: reintentos
Si todos los procesos de convertidor están en uso, pero hay una solicitud de flujo de trabajo pendiente, el servicio del motor sigue intentando reservar un proceso de convertidor tantas veces como se haya configurado para AVAILABLE_WORKER_CHECK_TRIES. Si se ha intentado el número máximo de reintentos, el motor no puede realizar la solicitud de ejecución.
Para fines de desarrollo, este valor se debe dejar en su valor por defecto.
En el caso de los entornos de producción, este valor se debe definir en un valor razonable, junto con el valor de AVAILABLE_WORKER_CHECK_INTERVAL.
Idealmente, no se recomienda que la demora total supere aproximadamente la mitad del tiempo del servicio de solicitud total.
AVAILABLE_WORKER_CHECK_INTERVAL
: demora de reintento de disponibilidad del convertidor
Tipo: entero
Por defecto: 3.000
Unidades: milisegundos
Permite determinar cuánto tiempo espera el servicio del motor antes de intentar reservar un proceso de convertidor para la ejecución del flujo de trabajo, en el supuesto de que el primer intento falle.
Para fines de desarrollo, este valor se debe mantener en su valor por defecto.
En el caso de los entornos de producción, este valor se debe definir en un valor razonable, junto con el valor de AVAILABLE_WORKER_CHECK_TRIES.
Idealmente, no se recomienda que la demora total supere aproximadamente la mitad del tiempo del servicio de solicitud total.
WORKER_DISMISS_INTERVAL:
Demora en la reducción de la velocidad de giro de proceso del convertidor
Tipo: entero
Por defecto: 1.800
Unidades: segundos
Permite especificar cuánto tiempo el servicio del motor espera trabajo adicional antes de que empiece a anular los procesos de convertidor. Este valor se desestima si KILL_WORKER_AFTER_RUN se define en verdadero.
Para los entornos locales, se debe dejar en su valor por defecto.
En el caso de implementaciones en la nube o entornos con memoria restringida, se puede reducir este valor, en especial si los flujos de trabajo solo se utilizan ocasionalmente.
¿Fue esto útil?