En la mayoría de los entornos Spectrum Technology Platform, hay múltiples flujos en ejecución simultáneamente, ya sean trabajos por lote o servicios que responden a un servicio web o solicitudes API. Para optimizar el procesamiento simultáneo, puede utilizar la configuración de tamaño de colección de la base de datos, en la cual se limita el número de solicitudes simultáneas que maneja una base de datos de Spectrum, además de las instancias de ejecución para controlar la cantidad de instancias de una etapa de flujo que se ejecutan simultáneamente. Ambas configuraciones deben ajustarse en conjunto para alcanzar un rendimiento óptimo.
Tamaño de colección de la base de datos
Las bases de datos Spectrum contienen los datos de referencia utilizados en determinadas etapas, como datos postales para validar direcciones, o datos de geocodificación usados para geocodificar direcciones. Estas bases de datos se pueden configurar para que acepten varias solicitudes simultáneas de las etapas o los servicios que los usan y, así, mejorar el rendimiento de las solicitudes de servicios o flujos de datos. El tamaño de colección de la base de datos establece el número máximo de solicitudes simultáneas que procesará una base de datos de Spectrum. De manera predeterminada, las bases de datos Spectrum tienen un tamaño de grupo 4, lo que indica que pueden procesar cuatro solicitudes simultáneamente.
El tamaño óptimo de grupo varía según el módulo. Generalmente se pueden visualizar mejores resultados al configurar el tamaño de grupo entre la mitad o el doble de la cantidad de CPU en el servidor, donde el tamaño óptimo de grupo para la mayoría de los módulos es la misma cantidad de CPU. Por ejemplo, si su servidor tiene cuatro CPU, puede que desee probar con un tamaño de grupo entre 2 (la mitad de la cantidad de CPU) y 8 o (el doble de la cantidad de CPU), donde el tamaño óptimo posiblemente sea 4 (la cantidad de CPU).
Cuando modifique el tamaño de colección, también debe considerar la cantidad de instancias de ejecución especificadas en el flujo para las etapas que acceden a la base de datos. Considere, por ejemplo, un flujo que tiene una etapa Global Geocode que está configurada para usar una instancia de tiempo de ejecución. Si establece en 4 el tamaño de grupo para la base de datos de Geocoding, no verá una mejora en el rendimiento, ya que solo habrá una instancia de ejecución y, por lo tanto, habría solo una solicitud a la vez para la base de datos. Sin embargo, si aumentara a 4 la cantidad de instancias de ejecución para Global Geocode, entonces podría observar una mejora en el rendimiento, ya que habrían cuatro instancias accediendo simultáneamente a la base de datos y, por lo tanto, usando el grupo completo.
Instancias de ejecución
Cada etapa de un flujo opera de forma asincrónica en su propio subproceso y es independiente de cualquier otra etapa. Esto permite el procesamiento paralelo de las etapas de un flujo y el uso de más de una instancia de tiempo de ejecución por etapa. Esto resulta útil en los flujos que tienen algunas etapas que procesan datos más rápido que otras. lo que puede derivar en una distribución desigual del trabajo entre los subgrupos. Por ejemplo, considere un flujo que consta de las siguientes etapas:
Según la configuración de las etapas, es posible que la etapa Validate Address procese los registros más rápidamente que la etapa Global Geocode. Si este es el caso, en algún punto durante la ejecución del flujo, la etapa Validate Address habrá procesado todos los registros, mientras que la etapa Global Geocode todavía tendrá registros por procesar. Para mejorar el rendimiento de este flujo, es necesario mejorar el rendimiento de la etapa más lenta; en este caso, Global Geocode. Una forma de hacerlo es especificando múltiples instancias de ejecución de la etapa. Configurar la cantidad de instancias de ejecución en dos, por ejemplo, significa que habrá dos instancias de esa etapa disponibles para procesar registros, cada una en su propio subgrupo. Tenga en cuenta que, a pesar de que la especificación de varias instancias de tiempo de ejecución puede mejorar el rendimiento, si este valor se establece muy alto, es posible que se agoten los recursos del sistema, lo que derivará en un menor rendimiento.
Procedimiento de ajuste
Para encontrar la configuración adecuada para el tamaño de colección de la base de datos y las instancias de ejecución, es necesario experimentar diferentes configuraciones hasta detectar las que maximicen los recursos disponibles del servidor sin sobrecargarlos y causar una reducción en el rendimiento.
- Comience con la búsqueda de datos de muestra para usarlos a medida que intenta diferentes configuraciones. El conjunto de datos de muestra debe ser suficientemente grande para que el tiempo de ejecución se pueda medir y validar con respecto a la uniformidad. Asimismo, los datos de muestra deben representar los datos reales que desea procesar. Por ejemplo, si realiza pruebas de rendimiento para geocodificación, asegúrese de que sus datos de prueba tengan un número igual de registros para todos los países que desea geocodificar.
- Si está probando un servicio o flujo en el que deba usar un recurso de base de datos, como bases de datos postales o de geocodificación, asegúrese de tener instalada la versión más reciente de la base de datos.
- Una vez que estén listos los datos de muestra y haya instalado los recursos de bases de datos más recientes, cree un flujo simple que lea datos de un archivo, los procese con la etapa que desea optimizar y los escriba en un archivo. Por ejemplo, si desea probar la configuración de rendimiento para Validate Address, cree un flujo que conste de Read from File, Validate Address y Write to File.
- Establezca el tamaño de colección de recursos de la base de datos en 1:
- Abra la Spectrum Management Console.
- Vaya a .
- Seleccione el recurso de base de datos que desea optimizar y haga clic en el botón Modificar .
- En el campo Tamaño de colección, especifique 1.
- Haga clic en Aceptar.
- Establezca las instancias de ejecución de la etapa en 1:
- Abra el flujo en Spectrum Enterprise Designer.
- Haga doble clic en la etapa que desee configurar para el uso de múltiples instancias de ejecución.
- Haga clic en Ejecución.Nota: No todas las etapas pueden usar múltiples instancias de ejecución. Si no existe botón Ejecutar en la parte inferior de la ventana de la etapa, esta última no puede usar múltiples instancias de ejecución.
- Seleccione Local y especifique 1.
- Haga clic en Aceptar para cerrar la ventana Rendimiento de ejecución y luego haga clic en Aceptar para cerrar la etapa.
- Ejecute varias veces el flujo y el registro de los siguientes valores promedio para calcular el rendimiento del punto de referencia:
- Tiempo transcurrido
- Utilización del CPU
- Utilización de la memoria
Consejo: Puede utilizar la consola JMX de Spectrum para supervisar el rendimiento. Para obtener más información, consulte Supervisión del rendimiento con la consola JMX de Spectrum. - Ejecute múltiples instancias del trabajo simultáneamente, si este es un caso de uso que debe admitirse. Registre el tiempo transcurrido, la utilización del CPU y la utilización de la memoria para cada escenario.Consejo: Puede utilizar un monitor de archivos para ejecutar múltiples instancias de un trabajo a la vez. Para obtener más información, consulte Activación de un flujo con un archivo de control.
- Aumente el tamaño de colección del recurso de la base de datos y la configuración de las instancias de ejecución de la etapa.
- Reinicie el servidor de .
- Vuelva a ejecutar el flujo, a la vez que registra el tiempo transcurrido, la utilización del CPU y la utilización de la memoria.
- Continúe para aumentar el tamaño de colección del recurso de la base de datos y las instancias de ejecución de la etapa hasta que comience a ver una disminución en el rendimiento.
- Si está probando el rendimiento de la geocodificación, repita este procedimiento mediante una entrada de país simple y múltiple.