Estoy tratando de ejecutar el comando jstack en mi aplicación java. La aplicación es bastante grande, ejecutándose dentro de jboss AS ocupando aproximadamente 4 gb de memoria. OS es la edición estándar de Windows Server 2003. Cada vez que aparece un error "No hay suficiente espacio de almacenamiento disponible para procesar este comando". Hay suficiente ram, 16 gb y espacio en disco. Entonces, ¿alguna idea?Jstack y No hay suficiente espacio de almacenamiento disponible para procesar este comando
Respuesta
me encontré con esto recientemente en WIN2008R2 y pensé en compartir mi solución, ya que tomó un tiempo para averiguar. Rob's comment about psexec -s es lo que hizo por mí.
Parece que en Vista y posteriormente jstack no funciona en contra de los servicios debido al contexto del usuario. No tiene nada que ver con la memoria. Sospecho que esta es la misma razón por la que la gente ha visto este problema en 2003 a través del escritorio remoto, a menos que use el modificador/admin o/console en mstsc. A partir de Vista, la seguridad reforzada es probablemente lo que lo rompió.
Iniciar mi aplicación desde una ventana de cmd funcionó bien, pero eso no me ayuda a depurar nuestra instalación estándar. Habilitar el puerto de depuración de Java (para VisualVM, Eclipse o la mayoría de los depuradores de Java) requiere reiniciar la aplicación, por lo que perderá el estado que probablemente esté tratando de capturar si aún no tiene habilitada la depuración. Comenzar el servicio con mis credenciales de usuario no funcionó. Me sorprendió un poco. Pero psexec -s ejecuta jstack desde el contexto del sistema, que funcionaba como un hechizo. Ah, y tendrá que ejecutar psexec desde un indicador elevado de cmd, si UAC está activado.
Esto funcionó simplemente genial para mí. –
ídem. gracias por salvar mi día –
Esto funciona muy bien con Win 2003. Muchas gracias – dAm2K
Tuvimos problemas al ejecutar JStack en una máquina con Windows incluso con una aplicación modesta (1GB). Terminamos haciendo nuestro análisis de pila y montón usando Netbeans. Esto pareció hacer frente al análisis de los archivos de volcado mucho mejor. YMMV.
Prueba Netbeans para crear perfiles: es muy bueno. Tenga en cuenta que VisualVM es un perfilador de NB de reducción y viene con 6u7.
En el pasado he visto esto cuando la JVM se ejecuta como un servicio de Windows en Windows 2003.
En primer lugar, comprobar para ver si se trata de una issue with the TMP directory.
En segundo lugar, jstack (o las otras utilidades como jconsole) no se conectará al proceso local a menos que se ejecute en la misma sesión. Si el servicio se está ejecutando como un usuario específico, es posible que pueda conectarse iniciando sesión en la misma sesión. Si está utilizando Escritorio remoto, puede conectarse utilizando "mstsc/admin" (solía ser/consola) e intente ejecutar jstack nuevamente. Definitivamente, asegúrese de que el directorio TMP esté configurado correctamente si esto no soluciona el problema.
Si el servicio se está ejecutando como LocalSystem, el procedimiento anterior probablemente no ayude mucho. No sé si hay una forma de iniciar sesión en la misma sesión que LocalSystem.
Algunas otras alternativas pueden ser establecer el proceso para el monitoreo remoto y usar jvisualvm (desde el servidor mismo o desde otra máquina) para conectarse a través de un puerto y realizar un volcado de hilo.
Solución si se ejecuta como Sistema local: Conéctese usando "mstsc/admin" usando una cuenta de inicio de sesión (no estoy seguro de los permisos exactos que necesita tener, el mío estaba en el grupo Administradores) y use la herramienta psexec Sysinternals de la siguiente manera: psexec -s "% JAVA_HOME% \ bin \ jstack.exe" PID> stack.txt Donde PID es la identificación del proceso de su proceso. También puede tener que sustituir la ruta real a su JDK dependiendo de su entorno específico. –
Este es un mensaje de error del O/S subyacente. No hay mucho que pueda hacer en su código para lidiar con esto, salvo capturar la excepción que se lanza. Boo a Windows por ser tan limitado.
psexec -s jstack PID >> c:\jstack.log
funciona perfectamente en la misma máquina. Por primera vez me tomó un tiempo pero nuevamente ejecuté con la opción de redirigir a archivo, que completó en unos pocos segundos.
- 1. System.Runtime.InteropServices.COMException (0x80070008): No hay suficiente almacenamiento está disponible para procesar este comando
- 2. Win32Exception No hay suficiente almacenamiento está disponible para procesar este comando
- 3. No hay suficiente almacenamiento disponible para procesar este comando cuando se ejecutan las utilidades de Java desde la línea de comandos
- 4. 'cuota' se hace referencia en este mensaje de excepción: No hay suficiente cuota está disponible para procesar este comando
- 5. misterioso "No hay suficiente cuota está disponible para procesar este comando" en el puerto de la cuadrícula de datos WinRT
- 6. R6016: no hay suficiente espacio para los datos de subproceso
- 7. Ver en el centro del diseño si hay espacio suficiente
- 8. No hay receptor EJB disponible para manejar
- 9. No se pudo reservar suficiente espacio para que el montón de objetos inicie JVM
- 10. enviando el comando para procesar usando/proc
- 11. UIStatusBarStyleBlackTranslucent no está disponible en este dispositivo
- 12. Hudson falla con el error "No queda espacio en el dispositivo" aunque hay suficiente espacio en el sistema
- 13. consulta SQL suficiente espacio en disco
- 14. Error de Eclipse: No hay fuente disponible para ""
- 15. Obtenga espacio de disco disponible en ruby
- 16. ¿Hay algún paquete para procesar opciones de línea de comando en R?
- 17. Weka GUI - ¿No hay suficiente memoria, no se cargará?
- 18. LaTeX: Mostrar bloque solo si queda espacio suficiente
- 19. Java: No se puede reservar espacio suficiente para montón de objetos
- 20. ¿Por qué mi aplicación está recibiendoReceiveMemoryWarning y se mata aunque la memoria es constante y hay suficiente memoria disponible?
- 21. Eclipse Gradle STS Extensión: No se puede reservar espacio suficiente para montón de objetos
- 22. CSS: "float: bottom" si hay espacio vertical disponible. "float: left" de lo contrario
- 23. ¿Qué es el comando Unix para ver cuánto espacio en disco hay y cuánto queda?
- 24. svn error de importación: No se pudo escribir svndiff en el archivo temporal: no hay suficiente espacio en el disco
- 25. Java IOException: no hay espacio en el búfer disponible al enviar paquetes UDP en Linux
- 26. ¿Hay una biblioteca Java para procesar archivos ONIX?
- 27. silverlight 3: ¿Hay alguna base de datos gratuita disponible para Silverlight (almacenada en almacenamiento aislado)?
- 28. El URI solicitado no es válido para este comando FTP
- 29. Jstack da java.lang.reflect.InvocationTargetException
- 30. Ayuda para comprender la salida jstack
Parece ser un mensaje de error de Windows. –
Lo tengo en un Tomcat que está tomando 280 mb. – ripper234
También miró a esta pregunta - http://stackoverflow.com/questions/222108/getting-the-java-thread-id-and-stack-trace-of-run-away-java-thread No lo hace t ayuda ya que jconsole no ve la aplicación. – ripper234