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?
Antworten:
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.
quelle
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:
quelle
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