
Overview
Nuestro cliente es una empresa líder en informática de imágenes con sede en EE. UU., especializada en soluciones integrales de imágenes de tejidos a humanos, análisis y gestión de datos. Sirven a clientes farmacéuticos y biotecnológicos en todas las etapas del proceso de desarrollo de medicamentos.
El cliente apoya sus operaciones con dos plataformas emblemáticas:
Un conjunto de herramientas de procesamiento posterior de múltiples modalidades para datos de imágenes (por ejemplo, SPECT, CT, PET, MR).
Una plataforma basada en la web para gestionar e informar sobre datos de imágenes médicas y metadatos.
El desafío
Uno de los productos más importantes de nuestro cliente utiliza un sistema de cola de trabajos para gestionar tareas en segundo plano de manera eficiente. Sin embargo, hemos identificado problemas relacionados con la memoria, específicamente con trabajadores de trabajos que no liberaban memoria después de completar ciertos procesos. Este comportamiento causaba que el uso de memoria del sistema se acumulase con el tiempo, forzando al contenedor a intercambiar memoria y, en última instancia, volverse no receptivo.
Después de revisar algunos de los picos de memoria más significativos, descubrimos que informes específicos consumían mucha memoria. Al procesar todos los datos de un proyecto, una sola ejecución de estos informes podría resultar en más de 3GB de uso de memoria. El problema principal era que esta memoria no se liberaba después de que se generaba el informe.
El uso de memoria aumentaba rápida y consistentemente en un corto período de tiempo.

La solución
Nos propusimos mejorar el sistema actual de cola de trabajos introduciendo dos características clave:
Autoconciencia del trabajador: para retirarse cuando se detecta un uso excesivo de memoria.
Gestión del grupo de trabajadores: para asegurar que el número correcto de trabajadores para cada tipo esté siempre en funcionamiento.

Un trabajador no sería retirado mientras esté procesando activamente una tarea. No se impondría un nuevo límite operativo, y continuaría funcionando normalmente.
Resultados
Después de que se lanzara la versión final de nuestra solución propuesta al problema de fuga de memoria en producción, identificamos mejoras importantes:
El uso de memoria de la cola de trabajos permaneció por debajo de 25GB.
La memoria ahora se libera rápidamente, y ya no alcanza los valores anteriores de uso, que generalmente superarían los 44GB. Como consecuencia, los usuarios ya no necesitan reiniciar el sistema cada 15 días para liberar el uso de memoria.

Otras historias de impacto