Tôi có một ứng dụng đang chạy trên Máy chủ ứng dụng Websphere 6.0 và ứng dụng này gặp sự cố gần như mỗi ngày do Out-Of-Memory. Từ chi tiết GC chắc chắn có rò rỉ bộ nhớ (nhiều trong số chúng)Làm cách nào để phát hiện trạng thái Hết bộ nhớ?
Thật không may ứng dụng được cung cấp bởi nhà cung cấp bên ngoài và việc khắc phục sự cố là chậm quá trình gây khó khăn. Là một phần của quá trình tôi cần phải thu thập các bản ghi và heapdumps mỗi khi OOM xảy ra.
Bây giờ tôi đang tìm cách để tự động hóa nó. Vấn đề cơ bản là làm thế nào để phát hiện tình trạng OOM. Một cách để tạo kịch bản lệnh shell sẽ định kỳ tìm kiếm các heapdumps mới. Cách tiếp cận này có vẻ như tôi là một kẻ bẩn thỉu. Một cách tiếp cận khác có thể là sử dụng JMX bằng cách nào đó. Nhưng tôi có ít hoặc không có kinh nghiệm trong lĩnh vực này và không có nhiều ý tưởng làm thế nào để làm điều đó.
Hoặc là trong WAS một số loại kích hoạt/móc cho điều này? Cảm ơn bạn rất nhiều vì mọi lời khuyên!
Cảm ơn bạn. Tôi đang sử dụng này, nhưng tôi cần một số loại thông báo rằng heapdump đã được tạo ra. Và tôi đang tìm cách tiếp cận tốt hơn so với định kỳ quét hệ thống tập tin. –
Tôi đã cập nhật câu trả lời của mình để bạn chỉ cần kiểm tra sự tồn tại của một tệp cụ thể. Tôi không chắc là có cách tiếp cận tốt hơn. – Mark
Chỉ cần sử dụng một cái gì đó như thế này để thông báo cho bạn: -XX: OnOutOfMemoryError = "echo PID% p vừa tạo ra một heapdump | mail [email protected]" để gửi thư cho bạn hoặc chạy bất cứ lệnh nào bạn muốn thông báo cho bạn. – HaveAGuess