
- Configure el flujo de trabajo de su proyecto, tome la estación de procesamiento cuyas características de hardware sean las más parecidas a las que se usarán en producción y cree un lote típico de imágenes.
- Vamos a medir cuánto tiempo se tarda en procesar un lote con un núcleo. No basta con procesar un lote una sola vez, porque FlexiCapture puede distribuir el procesamiento entre todos los núcleos disponibles, y durante las pruebas se tardará menos en procesar un lote, mientras que en producción real otros núcleos estarán ocupados procesando otros lotes. Para obtener una estimación fiable, recomendamos crear varias copias de su lote típico: al menos tantas como el número de núcleos, aunque es mejor multiplicarlo por N (que sea al menos 3) para minimizar el error de medición, y ponerlas todas a procesarse simultáneamente. El tiempo necesario para procesar un lote por núcleo es entonces el tiempo total de procesamiento dividido entre N. Esta estimación tiene en cuenta la posible competencia entre los núcleos de procesamiento por los recursos compartidos de la estación de procesamiento. Ejemplo. Tenemos una estación de procesamiento de 8 núcleos con Hyper-Threading habilitado, lo que nos da 16 núcleos lógicos y procesos de ejecución en esta estación. Necesitamos crear al menos 16 copias de un lote típico, pero sería mejor crear 16 x 3 = 48 copias para minimizar el error de medición. Colocamos todos los lotes en la hotfolder de FlexiCapture, iniciamos el temporizador cuando se crea la primera tarea de importación y lo detenemos después de que el último resultado se haya exportado al backend: marcará 15 minutos. En ese tiempo, cada núcleo tiene que procesar 3 lotes, por lo tanto, el tiempo para procesar 1 lote es de aproximadamente 5 minutos. Nuestro lote tiene 69 páginas, y podemos decir que se tardan 4.35 segundos en procesar 1 página.
- Una vez que conocemos el rendimiento deseado en páginas por hora o por día, podemos obtener una estimación del número de núcleos necesario. Suponga que necesita procesar P páginas en un tiempo T. Ya sabemos por lo anterior que 1 núcleo necesita un tiempo t para procesar 1 página. Por lo tanto, necesita N = (P x t ) / T núcleos. Ejemplo. Un cliente necesita procesar 200,000 páginas en 8 horas, que son 28,800 segundos. Como sabemos por lo anterior, 1 núcleo tarda 4.35 segundos en procesar 1 página. Por lo tanto, necesitamos (200,000 x 4.35) / 28,800 = 31 núcleos. Así, 2 estaciones de procesamiento con 8 núcleos y Hyper-Threading habilitado (32 núcleos lógicos en total) serán suficientes para el procesamiento automático.
- La carga total sobre la infraestructura que puede dar lugar a cuellos de botella:
-
- en el hardware del servidor FlexiCapture;
-
- en la red; o
-
- en recursos compartidos externos (como bases de datos, servicios externos, etc.) a los que acceden los scripts de procesamiento personalizados.
-
- El número de núcleos de procesamiento que puede atender el Processing Server. Este número depende del tiempo promedio que necesita un núcleo para realizar una tarea. Este tiempo depende en gran medida del tamaño del lote (en páginas) y de la personalización implementada. Por lo general, si tiene alrededor de 10 páginas en un lote, el Processing Server puede atender 120 núcleos de procesamiento. Sin embargo, si crea una gran cantidad de etapas personalizadas con scripts muy rápidos, o si va a procesar una página por lote, reducirá considerablemente el tiempo promedio de la tarea, lo que puede provocar una ligera disminución del número máximo de núcleos de procesamiento.
Para detectar este problema, debe supervisar el contador Free Processing Cores en el Processing Server. Si observa que, a pesar de ello, tiene una cola de documentos para procesar, que el número de núcleos ocupados alcanzó la saturación en algún momento y casi nunca vuelve a subir, significa que se ha producido el efecto descrito. Para solucionarlo:
- procese todo el lote sin dividirlo en tareas pequeñas, siempre que sea posible (consulte Propiedades de etapa en el cuadro de diálogo de configuración del flujo de trabajo),
- procese las páginas en bloques más grandes: aumente el número promedio de páginas por lote, combine varias etapas personalizadas en una sola o incorpore la personalización a una etapa estándar, por ejemplo, añadiéndola a un evento de enrutamiento en el script de esa etapa.
