Làm thế nào an toàn để thực hiện nâng cấp JVM nhỏ?


10

Tôi đã làm việc trên JVM trong nhiều năm và tôi rất hiếm khi gặp sự cố JVM ... đó là cho đến khoảng 6 tháng trước.

Vì tôi đã trải qua khoảng 5 sự cố JVM do 2 lỗi JVM. Giải pháp từ Oracle luôn là ... nâng cấp.

Mỗi bản nâng cấp luôn luôn đến và từ một bản phát hành điểm ... tức là và đề xuất mới nhất của Oracle (sau khi xác nhận rằng họ đã sửa lỗi) là nâng cấp từ 1.6u20 lên 1.6u26.

Tôi nên nâng cấp các phiên bản nhỏ của JVM như thế nào?

Đây có phải là một sự kiện lớn đòi hỏi số lượng lớn thử nghiệm hồi quy hay chúng là những nâng cấp an toàn nên được chấp nhận?


3
Trong bối cảnh nào thì JVM trong câu hỏi sẽ chạy? Bạn có sử dụng nó để chơi các applet trò chơi hay bạn chạy hệ thống thông tin của bệnh viện trên đó? Câu trả lời đúng phụ thuộc rất nhiều vào thông tin đó.
blubb

Câu trả lời:


5

Đây không phải là một sự kiện lớn để nâng cấp một phiên bản nhỏ và tôi chưa bao giờ gặp sự cố.

Điều đó nói rằng, các vấn đề Java 7 khét tiếng có phần đáng sợ và thậm chí khó khăn hơn đó là một phiên bản nâng cấp lớn, những vấn đề cụ thể đó đã xuất hiện trên thực tế trong Java 6 ~ u20 và có thể đã được sửa trong u25. Chúng chỉ nổi lên vì Java 7 có một số cờ tối ưu hóa được bật theo mặc định mà Java 6 không có. Nếu bạn đã sử dụng các cờ đó trong Java 6, bạn có thể gặp phải không chỉ sự cố, mà việc thực thi các vòng lặp không chính xác , đó là tính toán sai, do nâng cấp nhỏ từ 6u19 lên 6u20 (xấp xỉ).

Thực tế là, không ai đảm bảo rằng một phiên bản nâng cấp sẽ hoạt động cả. JVM, môi trường của nó (máy tính, HĐH) và ứng dụng của bạn, tất cả chúng tương tác lẫn nhau và để chắc chắn một cách hợp lý rằng toàn bộ đống công cụ khổng lồ kết hợp tốt với nhau, bạn thực sự nên thực hiện kiểm tra hồi quy cực lớn.

Cách tiếp cận nâng cấp JVM của tôi tương tự như bất kỳ nâng cấp nào: trừ khi tôi có nhu cầu cụ thể để nâng cấp và trừ khi đó là nâng cấp bảo mật quan trọng, tôi sẽ chờ một lúc và đọc kinh nghiệm của những người khác trên internet. Nếu không ai phàn nàn trong vòng một tháng hoặc lâu hơn, thì có khả năng an toàn để nâng cấp.


Có nơi nào cụ thể mà bạn muốn đọc kinh nghiệm của người khác trên internet không?
Bắc Dakotah

@Dakotah North: Không phải là một nơi cụ thể. Treo trên nhiều danh sách gửi thư (chẳng hạn như notify@apache.org , nơi cảnh báo về các vấn đề nghiêm trọng xuất hiện vào ngày Java 7 được phát hành) cung cấp nhiều thông tin loại này.
Joonas Pulakka

4

Theo kinh nghiệm của tôi với các ứng dụng Java doanh nghiệp, các lợi ích của việc cập nhật các bản cập nhật JVM nhỏ sẽ tăng thêm các rủi ro liên quan.

Một lợi ích là các bản cập nhật nhỏ hầu như luôn chứa các bản sửa lỗi . Áp dụng các bản cập nhật này thực sự có thể cải thiện sự ổn định của môi trường sản xuất của bạn. Tôi đã gặp sự cố JVM trong đó phân tích nguyên nhân gốc cho thấy lỗi đã được xác định và sửa trong một bản cập nhật JVM nhỏ.

Một lợi ích khác là các bản cập nhật nhỏ thường chứa các cải tiến hiệu suất . Tuy nhiên, như @Joonas lưu ý, sẽ rất rủi ro khi sử dụng các cờ hiệu suất chưa được chứng minh hoặc thử nghiệm trong bất kỳ bản cập nhật nào (chính hoặc phụ) mà không có thử nghiệm đáng kể.

Như với bất kỳ thay đổi nào, điều quan trọng nhất là bạn tiến hành một cách có trách nhiệm . Dưới đây là một số thực tiễn mà tôi tuân theo khi lập kế hoạch cập nhật JVM:

  • Xem xét cẩn thận tất cả các ghi chú phát hành cho mỗi bản cập nhật nhỏ giữa phiên bản hiện tại của bạn và phiên bản đích.
  • Hiểu người dùng của bạn cho phép ngừng ứng dụng và kiểm tra hồi quy tương ứng. (@Simon)
  • Nghiên cứu trải nghiệm của những người khác trên Internet (@Joonas)
  • kế hoạch rollback tại chỗ (@Thorbjorn)

2

Xung quanh Oracle Java 1.6 u20, một cảnh báo kiểm tra an toàn cho "Mã hỗn hợp" đã được giới thiệu, điều này ảnh hưởng đến ứng dụng của chúng tôi đối với một số người dùng khiến nó bị sập. Đây là một nâng cấp nhỏ và có ảnh hưởng nghiêm trọng trong sản xuất.

Luôn luôn chuẩn bị cho một rollback.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.