Estoy usando zipline para generar y transmitir un archivo ZIP como una descarga del navegador. La generación y la descarga del ZIP ocurren simultáneamente. Todo funciona como se esperaba, pero Heroku parece usar cantidades cada vez mayores de memoria a medida que se descargan los archivos. El aumento en el consumo de memoria es generalmente cercano, pero no tan grande, como el tamaño del archivo zip que se descarga. El ZIP está comprimido, pero el contenido ya está muy comprimido, así que no creo que esta diferencia se deba a eso. La activación constante de una nueva descarga del mismo ZIP aumenta repetidamente el uso de la memoria, pero parece disminuir.
No hay pérdida de memoria pasiva, pero al menos hasta donde Heroku informa, está claro que algo sobre este proceso solicita más memoria y no parece liberarla nunca al sistema operativo (?).
Últimas 24 horas:
Últimas 2 horas:
Métricas de Ruby según lo informado por Heroku:
Prácticamente cada aumento brusco en los gráficos de uso de memoria es una descarga ZIP que se activa. Cambié a un banco de pruebas con 1 GB de memoria en lugar de 512 MB para ver si ayudaría o liberaría memoria, pero no fue así.
Las ranuras de memoria libres de Ruby y los objetos del montón no parecen cambiar en absoluto. No sé si esto es una falla en el complemento de métricas beta en Heroku, pero no sé cómo investigarlo.
La gema zipline usa ZipTricks como back-end, y he vuelto a implementar lo que ya había hecho con ZipTricks directamente y encontré exactamente el mismo problema.
https://github.com/schneems/puma_worker_killer ¿Por qué no pruebas esto? La fragmentación de la memoria parece progresar incluso cuando se realiza la liberación de la memoria.