es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Ejecutar pprof en los datos recopilados de una máquina remota?

Tengo un programa que se ejecuta en una máquina remota sin cabeza (es decir, sin servidor X) que tiene una fuga de memoria. Pude instalar gperftools y ejecuté el verificador de montón (heap checker), que encontró la fuga.

Mi problema es que no puedo instalar pprof en la máquina remota debido a todas las bibliotecas gráficas requeridas. Por lo tanto, copié el archivo .heap generado en una máquina diferente que sí tiene pprof instalado. Esta máquina también tiene todas las mismas bibliotecas que la máquina remota.

Intenté ejecutar el comando pprof sugerido por el verificador de montón, pero con –text en lugar de –gv.

$ pprof <mi_bin> <archivo_heap> --inuse_objects --lines --heapcheck --text

Pero se queja de un comando curl fallido.

Using local file <mi_bin>.
Use of uninitialized value $host in substitution (s///) at
/usr/bin/pprof line 3195. Use of uninitialized value $hostport in
concatenation (.) or string at /usr/bin/pprof line 3197. Use of
uninitialized value $prefix in concatenation (.) or string at
/usr/bin/pprof line 3197. Use of uninitialized value $host in
substitution (s///) at /usr/bin/pprof line 3195. Use of uninitialized
value $hostport in concatenation (.) or string at /usr/bin/pprof line
3197. Use of uninitialized value $prefix in concatenation (.) or string at /usr/bin/pprof line 3197. Use of uninitialized value $host
in sprintf at /usr/bin/pprof line 3364. Gathering CPU profile from
http:///pprof/profile?seconds=30 for 30 seconds to
/home/developer/pprof/<mi_bin>.1640195244. Ten paciencia...
curl: (6) No se pudo resolver el host 'http' Error al obtener el perfil: curl
'http:///pprof/profile?seconds=30' >
/home/developer/pprof/.tmp.<mi_bin>.1640195244.: No existe el archivo o el directorio

Entonces, mis preguntas son:
– ¿Es posible lo que estoy intentando?
– ¿Debería utilizar un comando pprof diferente?
– ¿De qué se trata el comando curl?

Gracias,

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como un experto en IT especializado en pprof y gperftools, puedo proporcionar información sobre las preguntas hechas por el usuario.

    En primer lugar, es posible analizar la fuga de memoria utilizando pprof en una máquina diferente a aquella en la cual se generó el archivo heap. Esto se debe a que pprof puede cargar archivos de perfil de heap generados por gperftools y analizarlos en cualquier máquina con las dependencias de software necesarias.

    En relación al comando pprof utilizado por el usuario, parece haber un problema con el comando curl que se utiliza internamente por pprof para descargar el perfil de CPU. El mensaje de error sugiere que el comando curl no logró resolver la URL del host y no pudo obtener los datos del perfil.

    Para solucionar este problema, el usuario puede intentar lo siguiente:

    • Verificar la conectividad de red de la máquina en la cual se está ejecutando pprof y asegurarse de que pueda alcanzar la URL del host especificada en el comando curl.
    • Actualizar el comando pprof para utilizar un perfil de CPU local en lugar de descargarlo desde un host remoto. Esto se puede hacer especificando la ruta al archivo de perfil de CPU en el comando, de la siguiente manera:
      pprof <my_bin> <heap_file> --inuse_objects --lines --heapcheck --text <cpu_profile_file>
      
    • Si los pasos anteriores no funcionan, el usuario puede intentar ejecutar pprof con la opción --verbose para obtener mensajes de error más detallados e información de depuración.

    En conclusión, es posible analizar una fuga de memoria utilizando pprof en una máquina diferente a aquella en la cual se generó el archivo heap. El usuario puede solucionar el problema con el comando curl e intentar opciones alternativas para cargar los datos del perfil de CPU.

Comments are closed.