Dans quelle mesure est-il sûr d'effectuer des mises à niveau JVM mineures?


10

Je travaille sur la JVM depuis des années et j'ai très rarement rencontré un crash de la JVM ... il y a environ 6 mois environ.

Depuis, j'ai connu environ 5 plantages JVM résultant de 2 défauts JVM. La solution d'Oracle était toujours la même ... mise à niveau.

Chaque mise à niveau est toujours vers et depuis une version ponctuelle ... c'est-à-dire et la dernière suggestion d'Oracle (après avoir confirmé qu'ils ont corrigé le bogue) était de passer de 1.6u20 à 1.6u26.

Dans quelle mesure devrais-je mettre à niveau des versions mineures de la JVM?

Est-ce un grand événement qui nécessite une énorme quantité de tests de régression ou s'agit-il de mises à niveau sûres qui devraient être adoptées?


3
Dans quel contexte la JVM en question fonctionnera-t-elle? L'utilisez-vous pour jouer à des applets de jeu ou utilisez-vous le système d'information d'un hôpital? La bonne réponse dépend fortement de ces informations.
blubb

Réponses:


5

La mise à niveau d'une version mineure ne devrait pas être un événement majeur et je n'ai jamais rencontré de problème.

Cela dit, les problèmes infâmes de Java 7 sont quelque peu effrayants, et même difficile, il s'agissait d'une mise à niveau majeure de la version, ces problèmes spécifiques sont apparus en fait dans Java 6 ~ u20 et ont peut-être été corrigés dans u25. Ils sont apparus uniquement parce que Java 7 a certains indicateurs d'optimisation activés par défaut que Java 6 n'a pas. Si vous aviez utilisé ces indicateurs dans Java 6, vous auriez pu subir non seulement des plantages, mais une exécution incorrecte des boucles , c'est-à-dire des erreurs de calcul, en raison d'une mise à niveau mineure de 6u19 à 6u20 (environ).

Le fait est que personne ne garantit qu'une version mise à niveau fonctionnera du tout. La JVM, son environnement (ordinateur, système d'exploitation) et votre application, ils interagissent tous mutuellement, et pour être raisonnablement sûr que l'énorme pile de choses joue bien ensemble, vous devez en effet faire énormément de tests de régression.

Mon approche des mises à niveau JVM est similaire à toutes les mises à niveau: à moins d'avoir un besoin spécifique de mise à niveau et à moins qu'il ne s'agisse d'une mise à niveau de sécurité critique, j'attendrai un moment et lirai les expériences des autres sur Internet. Si personne ne se plaint dans un mois environ, la mise à niveau est probablement sûre.


Y a-t-il un endroit spécifiquement où vous cherchez à lire les expériences des autres sur Internet?
Dakotah North

@Dakotah North: Pas un endroit spécifique. Accrocher à de nombreuses listes de diffusion (comme announce@apache.org , où une alerte de problèmes critiques est survenue le jour de la sortie de Java 7) fournit de nombreuses informations de ce type.
Joonas Pulakka

4

D'après mon expérience avec les applications Java d'entreprise, les avantages de l'adoption des mises à jour JVM mineures l'emportent sur les risques associés.

Un avantage est que les mises à jour mineures contiennent presque toujours des corrections de bogues . L'application de ces mises à jour peut réellement améliorer la stabilité de vos environnements de production. J'ai rencontré des pannes JVM où l'analyse des causes profondes révèle que le défaut a déjà été identifié et corrigé dans une mise à jour JVM mineure.

Un autre avantage est que les mises à jour mineures contiennent souvent des améliorations de performances . Cependant, comme l'a noté @Joonas, il est risqué d'utiliser des indicateurs de performances non éprouvés ou expérimentaux dans toute mise à jour (majeure ou mineure) sans tests significatifs.

Comme pour tout changement, il est très important que vous procédiez de manière responsable . Voici quelques pratiques à suivre lors de la planification d'une mise à jour JVM:

  • Lisez attentivement toutes les notes de publication pour chaque mise à jour mineure entre votre version actuelle et la version cible.
  • Comprenez la tolérance de vos utilisateurs pour les pannes d'application et testez la régression en conséquence. (@Simon)
  • Recherchez l'expérience des autres sur Internet (@Joonas)
  • Avoir un plan de restauration en place (@Thorbjorn)

2

Autour d'Oracle Java 1.6 u20, un contrôle de sécurité alertant du "code mixte" a été introduit, ce qui a influencé notre application pour certains utilisateurs, provoquant son plantage. Il s'agissait d'une mise à niveau mineure et avait de graves influences sur la production.

Soyez toujours prêt pour un retour en arrière.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.