Küçük JVM yükseltmeleri yapmak ne kadar güvenli?


10

Yıllardır JVM üzerinde çalışıyorum ve çok nadiren bir JVM kazası yaşadım ... yaklaşık 6 ay öncesine kadar.

O zamandan beri 2 JVM hatasından kaynaklanan yaklaşık 5 JVM çökmesi yaşadım. Oracle'ın çözümü her zaman aynıydı ... yükseltme.

Her yükseltme her zaman ve bir nokta sürümünden ... yani Oracle'ın en son önerisi (hatayı düzelttiklerini doğruladıktan sonra) 1.6u20'den 1.6u26'ya yükseltmekti.

JVM'nin küçük sürümlerini yükseltmem konusunda ne kadar endişelenmeliyim?

Bu, muazzam miktarda regresyon testi gerektiren büyük bir olay mı yoksa kucaklanması gereken güvenli yükseltmeler mi?


3
Söz konusu JVM hangi bağlamda çalışacak? Oyun uygulamaları oynamak için mi kullanıyorsunuz yoksa üzerinde bir hastanenin bilgi sistemi mi kullanıyorsunuz? Doğru cevap büyük ölçüde bu bilgilere bağlıdır.
blubb

Yanıtlar:


5

Olmamalı , bir alt sürümün yükseltmek için büyük bir olay olacak ve asla deneyimli sorunları var.

Bununla birlikte , kötü şöhretli Java 7 sorunları biraz korkutucu ve büyük bir sürüm yükseltmesi olsa bile, bu özel sorunlar aslında Java 6 ~ u20'de ortaya çıktı ve belki u25'te düzeltildi. Yalnızca Java 7'nin Java 6'da varsayılan olarak etkin olmayan bazı optimizasyon bayrakları olduğu için ortaya çıktılar. Java 6'da bu bayrakları kullanmış olsaydınız, 6u19'dan 6u20'ye (yaklaşık olarak) küçük bir yükseltme nedeniyle sadece çökmeler değil , döngülerin yanlış yürütülmesi , yani yanlış hesaplamalar yaşayabilirsiniz.

Gerçek şu ki, hiç kimse yükseltilmiş bir versiyonun çalışacağını garanti etmez. JVM, çevresi (bilgisayar, işletim sistemi) ve uygulamanız, hepsi karşılıklı olarak etkileşime girer ve tüm muazzam şeylerin birlikte güzelce oynadığından makul bir şekilde emin olmak için, gerçekten çok büyük miktarda regresyon testi yapmanız gerekir.

JVM yükseltmelerine yaklaşımım herhangi bir yükseltmeye benzer: yükseltmeye özel bir ihtiyacım yoksa ve kritik bir güvenlik yükseltmesi olmadıkça, bir süre bekleyeceğim ve diğer insanların internetteki deneyimlerini okuyacağım. Kimse bir ay içinde şikayet etmezse, yükseltme yapmak muhtemelen güvenlidir.


Özellikle başkalarının internetteki deneyimlerini okumak istediğiniz herhangi bir yer var mı?
Dakotah North

@Dakotah North: Belirli bir yer değil. (Örneğin sayısız posta listeleri asılı announce@apache.org kritik sorunların bir uyarı yayınlandı Java 7 gün geldi) bilgi bu tür bol sağlar.
Joonas Pulakka

4

Kurumsal Java uygulamalarıyla ilgili deneyimime göre, küçük JVM güncellemelerini benimsemenin faydaları, ilgili risklerden ağır basmaktadır.

Bunun bir yararı, küçük güncellemelerin neredeyse her zaman hata düzeltmeleri içermesidir . Bu güncellemeleri uygulamak, üretim ortamlarınızın kararlılığını artırabilir. Kök neden analizinin kusurun küçük bir JVM güncellemesinde zaten tanımlandığını ve düzeltildiğini ortaya koyduğu JVM çökmeleri yaşadım.

Diğer bir avantaj, küçük güncellemelerin genellikle performans iyileştirmeleri içermesidir . Bununla birlikte, @Joonas tarafından belirtildiği gibi, önemli bir test yapmadan herhangi bir güncellemede (büyük veya küçük) kanıtlanmamış veya deneysel performans bayrakları kullanmak risklidir.

Herhangi bir değişiklikte olduğu gibi, sorumlu bir şekilde ilerlemeniz çok önemlidir . Bir JVM güncellemesi planlarken uyguladığım bazı uygulamalar şunlardır:

  • Mevcut sürümünüz ile hedef sürümünüz arasındaki tüm küçük güncellemeler için tüm sürüm notlarını dikkatle inceleyin .
  • Kullanıcılarınızın uygulama kesintilerine karşı toleransını ve buna göre regresyon testini anlayın . (@Simon)
  • Araştırma internette başkalarının deneyimlerini (@Joonas)
  • Bir geri alma planı hazırla (@Thorbjorn)

2

Oracle Java 1.6 u20 civarında, bazı kullanıcıların çökmesine neden olan uygulamamızı etkileyen "Karışık kod" için bir güvenlik denetimi uyarısı kullanıma sunuldu. Bu küçük bir yükseltmeydi ve üretimde ciddi etkileri oldu.

Daima bir geri dönüş için hazırlıklı olun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.