¿Qué tan seguro es hacer actualizaciones menores de JVM?

10

He estado trabajando en la JVM durante años y rara vez he experimentado un bloqueo de la JVM ... hasta hace aproximadamente 6 meses.

Desde entonces, he experimentado aproximadamente 5 bloqueos JVM como resultado de 2 defectos JVM. La solución de Oracle siempre fue la misma ... actualización.

Cada actualización es siempre hacia y desde un lanzamiento puntual ... es decir, y la última sugerencia de Oracle (después de confirmar que resolvieron el error) fue actualizar de 1.6u20 a 1.6u26.

¿Qué tan preocupado debería estar actualizando versiones menores de la JVM?

¿Es este un gran evento que requiere una enorme cantidad de pruebas de regresión o son actualizaciones seguras que deberían adoptarse?

Dakotah North
fuente
3
¿En qué contexto se ejecutará la JVM en cuestión? ¿Lo usas para jugar applets de juegos o ejecutas el sistema de información de un hospital? La respuesta correcta depende en gran medida de esa información.
blubb

Respuestas:

5

No debería ser un gran evento actualizar una versión menor, y nunca he tenido problemas.

Dicho esto, los infames problemas de Java 7 son un tanto atemorizantes, e incluso si fue una actualización importante de la versión, esos problemas específicos aparecieron de hecho en Java 6 ~ u20 y tal vez se solucionaron en u25. Surgieron solo porque Java 7 tiene algunos indicadores de optimización habilitados por defecto que Java 6 no tiene. Si hubiera utilizado esos indicadores en Java 6, podría haber experimentado no solo bloqueos, sino también la ejecución incorrecta de bucles , es decir, errores de cálculo, debido a una actualización menor de 6u19 a 6u20 (aproximadamente).

El hecho es que nadie garantiza que una versión actualizada funcionará en absoluto. La JVM, su entorno (computadora, sistema operativo) y su aplicación, todos interactúan mutuamente, y para estar razonablemente seguros de que todo el enorme montón de cosas juega muy bien juntos, debería hacer una enorme cantidad de pruebas de regresión.

Mi enfoque para las actualizaciones de JVM es similar a cualquier actualización: a menos que tenga una necesidad específica de actualizar y a menos que sea una actualización de seguridad crítica, esperaré un momento y leeré las experiencias de otras personas en Internet. Si nadie se queja dentro de un mes más o menos, entonces es seguro actualizar.

Joonas Pulakka
fuente
¿Hay algún lugar específico en el que busques leer las experiencias de otras personas en Internet?
Dakotah North
@ Dakota Norte: No es un lugar específico. Colgar en numerosas listas de correo (como [email protected] , donde se produjo una alerta de problemas críticos el día en que se lanzó Java 7) proporciona mucha información de este tipo.
Joonas Pulakka
4

En mi experiencia con las aplicaciones Java empresariales, los beneficios de adoptar las actualizaciones JVM menores superan los riesgos asociados.

Una ventaja es que las actualizaciones menores casi siempre contienen correcciones de errores . La aplicación de estas actualizaciones puede mejorar la estabilidad de sus entornos de producción. He experimentado bloqueos de JVM donde el análisis de la causa raíz revela que el defecto ya ha sido identificado y corregido en una actualización menor de JVM.

Otro beneficio es que las actualizaciones menores a menudo contienen mejoras de rendimiento . Sin embargo, como señaló @Joonas, es arriesgado usar indicadores de rendimiento no comprobados o experimentales en cualquier actualización (mayor o menor) sin pruebas significativas.

Como con cualquier cambio, es más importante que proceda de manera responsable . Estas son algunas prácticas que sigo al planificar una actualización de JVM:

  • Revise cuidadosamente todas las notas de la versión para cada actualización menor entre su versión actual y la versión de destino.
  • Comprenda la tolerancia de sus usuarios para las interrupciones de la aplicación y la prueba de regresión en consecuencia. (@Simón)
  • Investigue la experiencia de otros en Internet (@Joonas)
  • Tener un plan de reversión (@Thorbjorn)
Miguel
fuente
2

Alrededor de Oracle Java 1.6 u20 se introdujo una alerta de verificación de seguridad para "Código mixto", que influyó en nuestra aplicación para algunos usuarios provocando que se bloquee. Esta fue una mejora menor, y tuvo graves influencias en la producción.

Siempre prepárate para una reversión.


fuente