Estoy usando mod perl 1.3.0 con apache 1.3.41 perl versión 5.8.6, y el tamaño de la memoria parece crecer aproximadamente 4k cada 3 o 4 solicitudes. El script Perl que se están ejecutando es simplemente:¿Cómo rastrear una fuga de memoria mod_perl?
print "Content-type: text/html\n\n"; print "baby";
Sin embargo, ese proceso de apache solo crece y crece cuando SLAM con referencia Apache. Estamos golpeando con:
ab -n 100000 -c 1 http://localhost/search/search.cgi &> /dev/null
y vemos como el tamaño proceso crece desde aproximadamente 4 megabytes a 24 después de cerca de 20.000 solicitudes.
Respondiendo a la pregunta a continuación: Estamos haciendo esto en redhat enterprise 4.7. Se ha señalado así porque tocamos un archivo estático o una solicitud de CGI y la memoria no crece. Cuando usamos un PerlHandler Apache :: Registry o PerlRun, o simplemente apuntemos el PerlHandler a algún código que sea un manejador, entonces todos tienen fugas.
¿Alguien ha visto algo como esto, o sabe qué está pasando?
EDITAR:
Gracias por las respuestas chicos. He usado Devel :: Cycle y encontré una filtración, pero el problema aquí es que hemos desmantelado nuestro código para imprimir el encabezado y una declaración. No hay forma de que la función de impresión en Perl gotee (espero ...). La sección de pérdida de memoria en Practical Modperl he leído, pero se trata de problemas de codificación, y de nuevo a menos que haya un problema con la función de impresión de Perl, no es el código.
Puede considerar formular esto en una pregunta concreta. :) – sharkin
También podría considerar enviar un informe de error a la gente de Apache. –
¿Puede por favor publicar los detalles del sistema operativo en el que está trabajando? ¿También ha intentado dejar que el proceso continúe hasta que alcanza el límite de memoria y tiene que reiniciar su servidor? Básicamente lo que quiero saber es ¿cómo has señalado que se trata de una pérdida de memoria con este módulo solamente? –