Tengo una aplicación que se ejecuta en Websphere Application Server 6.0 y se bloquea casi todos los días debido a falta de memoria. De verbose GC es cierto que hay pérdidas de memoria (muchos de ellos)Cómo detectar condiciones de falta de memoria?
Lamentablemente, la aplicación es proporcionada por un proveedor externo y obtener las cosas arregladas es lento & proceso doloroso. Como parte del proceso, necesito recopilar los registros y los volcados de almacenamiento cada vez que se produce el OOM.
Ahora estoy buscando una forma de automatizarlo. El problema fundamental es cómo detectar la condición OOM. Una forma sería crear un script de shell que buscará periódicamente nuevos heapdumps. Este enfoque me parece un poco sucio. Otro enfoque podría ser aprovechar el JMX de alguna manera. Pero tengo poca o ninguna experiencia en esta área y no tengo mucha idea de cómo hacerlo.
¿O en WAS hay algún tipo de gatillo/ganchos para esto? ¡Muchas gracias por cada consejo!
Gracias. Estoy usando esto, pero necesito algún tipo de notificación de que heapdump ha sido creado. Y estoy buscando un mejor enfoque que escanear periódicamente el sistema de archivos. –
Actualicé mi respuesta, por lo que solo necesitaría verificar la existencia de un archivo específico. No estoy seguro de que haya un mejor enfoque. – Mark
Simplemente use algo como esto para notificarle: -XX: OnOutOfMemoryError = "echo PID% p acaba de generar un heapdump | mail [email protected]" para enviarle por correo o ejecutar cualquier comando que desee notificarle. – HaveAGuess