Tôi đã sử dụng trình bao bọc dịch vụ Java trong một ứng dụng tùy chỉnh trong một thời gian và nó hoạt động tốt. Kể từ khi cập nhật ứng dụng của chúng tôi lên phiên bản mới trong vài ngày qua, JVM bắt đầu treo và sau đó trình bao bọc in bản ghi này trong nhật ký: JVM xuất hiện treo: Đã hết thời gian chờ tín hiệu từ JVM.Java xuất hiện treo
Sau đó, nó sẽ tự động chấm dứt JVM và khởi động lại ứng dụng. Điều này xảy ra sau khoảng 10 giờ chạy, điều này khiến cho việc gỡ lỗi trở nên khó khăn hơn.
Tất nhiên tôi sẽ xem xét các thay đổi mà chúng tôi đã thực hiện, nhưng không có thay đổi lớn nào được thực hiện mà tôi nghi ngờ sẽ gây ra loại sự cố này.
Tôi có thể tìm cách thử và tìm hiểu xem điều gì đang xảy ra ở đâu? Gỡ lỗi tin nhắn từ ứng dụng không cho biết bất kỳ điều gì thú vị. Nếu JVM chỉ gặp sự cố, nó thường sẽ tạo ra một kết xuất, có thể giúp gỡ lỗi nó, nhưng nó treo, vì vậy nó không tạo ra một bãi chứa. Nếu tôi làm cho nó không khởi động lại dịch vụ tự động là có bất cứ điều gì tôi có thể làm để có được một số thông tin hữu ích ra khỏi JVM trước khi khởi động lại nó?
Dường như với tôi rằng JVM không được treo từ lỗi lập trình điển hình. Những gì bạn đã chạy vào trước đó có thể gây ra JVM để treo?
Linux RHEL4, Java 1.6.0, Intel 32 bit. Tôi đang theo dõi số lượng chủ đề và cách sử dụng bộ nhớ; cho đến nay nó không sử dụng nhiều. Chúng tôi không sử dụng nhiều chủ đề. Chúng tôi chỉ khởi động một vài ứng dụng trong thời gian bắt đầu để xem xét từng phút để xem liệu có điều gì đó cần xử lý hay không. –
mức độ phù hợp là 10 giờ? Có thực sự chỉ có một vài khả năng: hoặc một số * cạn kiệt tài nguyên, hoặc một bế tắc ngẫu nhiên/chậm trễ. Loại ứng dụng nào? –
Không nhất quán chút nào. Cho đến nay nó chỉ xảy ra ba lần. Trên thực tế, có vẻ như mức trung bình cao hơn một chút so với 10 giờ. Nó xảy ra lúc 12, 14 và 19 giờ. Những gì tôi sẽ cố gắng và làm là đặt nó để không tự động khởi động lại để tôi có thể điều tra trạng thái một chút khi nó xảy ra. –