Java como lenguaje fue diseñado para que fuera imposible que el código de usuario desarrollado diera como resultado una aplicación bloqueada (crash). Cualquier error podría resultar en una excepción limpia que sería generada para poder ser detectada y manejada adecuadamente. En realidad tanto desarrolladores de Java como un administrador de sistemas, saben que la máquina virtual Java (JVM) puede bloquearse en algún momento de su ciclo de vida. Esto se debe a que la JVM es un programa escrito con un código nativo y como cualquier otro programa también experimenta errores.
Como cualquier programa cuando Java se bloquea literalmente muere, llevándose consigo su aplicación. Esto puede ser desastroso si la aplicación es un sistema de misión crítica. La aplicación estará fuera de servicio y dicha inactividad puede que no sea detectada hasta que algún cliente visite por ejemplo el sitio web o después de algunas horas hasta que el departamento de logística se percate que las órdenes no estan siendo recibidas. Una vez que se haya detectado que la aplicación esta inactiva, tomará una hora o más tiempo hasta que el administrador pueda llegar para reiniciarla.
- Solución
- Descripción Técnica
- Probando
- Solución de Problemas
- Retrasar Reanudo
- Inhabilitar Reanudos
- Respondiendo a Eventos
- Notificación vía Emails
- Servicios de Recuperación
- Configuración de Propiedades
Solución |
||
La Solución a este problema es tener una aplicación que pueda monitorear cuidadosamente su aplicación y que tenga el suficiente conocimiento de como trabaja Java. Una aplicación en la que se pueda confiar para monitorear su aplicación las 24 horas del día los 365 días del año y que automáticamente se encargue de los problemas cuando se generen. El Java Service Wrapper cuenta con varias propiedades de monitoreo, una de ellas es a habilidad para detectar cuando la JVM se ha bloqueado. Una vez que el Wrapper lo detecta automáticamente reanuda la JVM y mantiene el sistema funcionando con la menor demora posible. Finalmente se puede configurar un email como notificación y enviar al administrador del sistema para asegurarse que todo esta bajo control. Todo el proceso en la detección de bloqueos, recuperación así como de notificación es controlado por el Wrapper sin la necesidad de que algún humano este operando el sistema para tomar acción a este tipo y muchos otros problemas. Cuando un bloqueo es detectado el Wrapper registrará algo como lo que a continuación se presenta en el archivo de registro de valores:
Mientras que el previo mensaje pueda parecer confuso, es la JVM tratando de enviar información sobre el bloqueo. El hecho de que esta salida de datos es enviada a la consola por la JVM a un nivel muy bajo, es imposible que alguna herramienta de registro de valores de Java pueda registrar dicha información. Note que el Wrapper es capaz de capturar el 100% de la salida de datos de la consola de la JVM, asegurándose de mantener toda la información en el archivo de registro de valores. Sin la presencia del Wrapper no sólo su aplicación permanecerá inactiva, pero la explicación de lo que paso será perdida. Idealmente, cualquier bloqueo debería ser arreglado inmediatamente para evitar problemas similares en el futuro. Sin embargo, como esto es causado por interacciones entre códigos Java válidos y errores en la JVM, puede tomar semanas incluso meses antes que desarrolladores puedan identificar y arreglar el problema. El Wrapper ayuda a detectar problemas críticos incluyendo: |
Descripción Técnica |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
La detección de bloqueos en el Wrapper esta siempre habilitada, esta propiedad no causa alguna carga adicional en la JVM o el sistema. Se experimenten o no bloqueos, no hay manera de inhabilitar esta propiedad. Sin embargo, es posible controlar lo que el Wrapper hará en respuesta a bloqueos. Cuando un bloqueo es detectado, el Wrapper primero esperará (por defecto 5 segundos) para permitir que la memoria del sistema y los recursos regresen a la normalidad. De la misma manera que las notificaciones configuradas inicien una nueva instancia JVM para tener su aplicación una vez más en acción sin ningún retraso. Como se describe a continuación es posible inhabilitar esta funcionalidad de reinicio automático si así lo desea.
|
Referencia: Fallos (Crashes) |
El Java Service Wrapper proporciona un conjunto completo de propiedades de configuración que le permiten hacer que el Wrapper se adapte exactamente a sus necesidades. Por favor, lea la documentación de las propiedades individuales para ver todas las posibilidades además de los ejemplos mostrados anteriormente.
|