java - off - man lsof
Al ver demasiados lsof no se puede identificar el protocolo (3)
Cuando lsof imprime "No se puede identificar el protocolo", esto generalmente se relaciona con los sockets (también debería decir ''calcetín'' en las líneas de salida relevantes).
Entonces, en algún lugar de su código probablemente esté conectando los sockets y no los cierre correctamente (quizás necesite un bloque final).
Le sugiero que lea su código con un depurador (es más fácil de usar su IDE, potencialmente con un depurador remoto, si es necesario), mientras ejecuta lsof de lado a lado. Eventualmente debería poder ver qué hilo / línea de código está creando estos Descriptores de archivos.
Consulte el punto 10.2.2 de estas Preguntas frecuentes para obtener más detalles sobre la salida de Lsof.
Tengo un proceso / aplicación de Java. Cuando ejecuto / usr / sbin / lsof -p en ese proceso java, veo un montón de "no se puede identificar el protocolo". También, curiosamente, los descriptores de archivos (FD) están aumentando a un ritmo muy constante. Y los FD que se están creando tienen una descripción como "no se puede identificar el protocolo".
Entonces, ¿hay alguna manera de instrumentar / perfilar el proceso java para determinar quién está creando tantas FD? Cualquier explicación detallada sobre cualquier herramienta sería realmente útil.
Una búsqueda rápida en Google me dice que strace es una forma, pero IIUC, que mostrará las llamadas al sistema Linux que salen del proceso Java. Estoy más interesado en saber qué parte de mi código Java se está comportando mal que las llamadas de sistema que se generan.
Una vez más, cualquier idea / sugerencia sería simplemente genial!
Tal vez usted observa un error en JVM 1.6 con pérdida de conexiones cuando usa SSL y el nombre de host: http://bugs.sun.com/view_bug.do?bug_id=6745052
Las copias Lsof can''t identify protocol
para las conexiones TCP / IP medio abiertas: https://idea.popcount.org/2012-12-09-lsof-cant-identify-protocol/