Wie sicher ist es, kleinere JVM-Upgrades durchzuführen?

10

Ich arbeite seit Jahren an der JVM und habe sehr selten einen JVM-Absturz erlebt ... das ist bis vor ungefähr 6 Monaten.

Seitdem habe ich ungefähr 5 JVM-Abstürze infolge von 2 JVM-Fehlern erlebt. Die Lösung von Oracle war immer die gleiche ... Upgrade.

Jedes Upgrade erfolgt immer zu und von einer Punktversion ... dh und der neueste Vorschlag von Oracle (nachdem bestätigt wurde, dass der Fehler behoben wurde) war ein Upgrade von 1.6u20 auf 1.6u26.

Wie besorgt sollte ich kleinere Versionen der JVM aktualisieren?

Ist dies ein großes Ereignis, das eine enorme Menge an Regressionstests erfordert, oder handelt es sich um sichere Upgrades, die berücksichtigt werden sollten?

Dakotah Nord
quelle
3
In welchem ​​Kontext wird die betreffende JVM ausgeführt? Verwenden Sie es zum Spielen von Spiel-Applets oder betreiben Sie das Informationssystem eines Krankenhauses darauf? Die richtige Antwort hängt stark von diesen Informationen ab.
Blubb

Antworten:

5

Es sollte kein großes Ereignis sein, eine kleinere Version zu aktualisieren, und ich habe nie Probleme gehabt.

Das heißt, die berüchtigten Java 7-Probleme sind etwas beängstigend, und selbst wenn es sich um ein größeres Versions-Upgrade handelte, traten diese spezifischen Probleme tatsächlich in Java 6 ~ u20 auf und wurden möglicherweise in u25 behoben. Sie sind nur aufgetaucht, weil in Java 7 einige Optimierungsflags standardmäßig aktiviert sind, in Java 6 jedoch nicht. Wenn Sie diese Flags in Java 6 verwendet hätten, hätten Sie möglicherweise nicht nur Abstürze, sondern auch eine falsche Ausführung von Schleifen , dh Fehlkalkulationen, aufgrund eines geringfügigen Upgrades von 6u19 auf 6u20 (ungefähr) erlebt.

Tatsache ist, dass niemand garantiert, dass eine aktualisierte Version überhaupt funktioniert. Die JVM, ihre Umgebung (Computer, Betriebssystem) und Ihre Anwendung interagieren alle miteinander. Um ziemlich sicher zu sein, dass der gesamte enorme Haufen an Dingen gut zusammenspielt, sollten Sie in der Tat eine enorme Menge an Regressionstests durchführen.

Mein Ansatz für JVM-Upgrades ähnelt allen Upgrades: Wenn ich kein spezielles Upgrade benötige und es sich nicht um ein kritisches Sicherheitsupgrade handelt, werde ich eine Weile warten und die Erfahrungen anderer Leute im Internet lesen. Wenn sich innerhalb eines Monats niemand beschwert, ist ein Upgrade wahrscheinlich sicher.

Joonas Pulakka
quelle
Gibt es einen Ort, an dem Sie die Erfahrungen anderer Menschen im Internet lesen möchten?
Dakotah Nord
@ Dakotah North: Kein bestimmter Ort. Das Hängen an zahlreichen Mailinglisten (z. B. [email protected] , wo am Tag der Veröffentlichung von Java 7 eine Warnung vor kritischen Problemen einging) bietet zahlreiche Informationen dieser Art.
Joonas Pulakka
4

Nach meiner Erfahrung mit Java-Unternehmensanwendungen überwiegen die Vorteile der Einführung kleinerer JVM-Updates die damit verbundenen Risiken.

Ein Vorteil ist, dass die kleineren Updates fast immer Fehlerbehebungen enthalten . Das Anwenden dieser Updates kann die Stabilität Ihrer Produktionsumgebungen verbessern. Ich habe JVM-Abstürze erlebt, bei denen die Ursachenanalyse zeigt, dass der Fehler bereits in einem kleinen JVM-Update identifiziert und behoben wurde.

Ein weiterer Vorteil ist, dass kleinere Updates häufig Leistungsverbesserungen enthalten . Wie von @Joonas festgestellt, ist es jedoch riskant, unbewiesene oder experimentelle Leistungsflags in jedem Update (Major oder Minor) ohne signifikante Tests zu verwenden.

Wie bei jeder Änderung, ist es sehr wichtig , dass Sie in einer gehen verantwortlich Weise. Hier sind einige Vorgehensweisen, die ich bei der Planung eines JVM-Updates befolge:

  • Lesen Sie alle Versionshinweise für jedes kleinere Update zwischen Ihrer aktuellen Version und der Zielversion sorgfältig durch .
  • Verstehen Sie die Toleranz Ihrer Benutzer für Anwendungsausfälle und testen Sie die Regression entsprechend. (@ Simon)
  • Erforschen Sie die Erfahrungen anderer im Internet (@Joonas)
  • Haben Sie einen Rollback-Plan (@Thorbjorn)
Mike
quelle
2

Um Oracle Java 1.6 u20 herum wurde eine Sicherheitsüberprüfungswarnung für "gemischten Code" eingeführt, die unsere Anwendung für einige Benutzer beeinflusste und zum Absturz führte. Dies war eine geringfügige Verbesserung und hatte schwerwiegende Einflüsse auf die Produktion.

Seien Sie immer auf einen Rollback vorbereitet.


quelle