Tôi muốn tạo một watchdog Nagios cho JVM trông khi JVM hết bộ nhớ và khởi động lại nó.Làm thế nào để khởi động lại JVM khi nó hết bộ nhớ bằng cách sử dụng giám sát JMX?
Hiện tại tôi đã có thể thiết lập JVM cho phép JMX nhưng tôi không biết cách phát hiện tình trạng OutOfMemory và khởi động lại nó.
/check_jmx -U service:jmx:rmi:///jndi/rmi://127.0.0.1:1100/jmxrmi -O "java.lang:type=Memory" -A "HeapMemoryUsage" -K used -I HeapMemoryUsage -J used -vvvv
JMX OK HeapMemoryUsage.used=957414288{committed=2415984640;init=2147483648;max=2863333376;used=957414288}
https://github.com/tcurdt/nagios-check-jmx
thật không may, tiêu chuẩn jdk có cách _no_ để phát hiện rằng một jvm đã nhấn OOM. đã tự mình trải qua điều này trong sản phẩm của chúng tôi. tôi đã kết thúc việc cài đặt một trình xử lý ghi nhật ký để kiểm tra LogRecords có chứa một OOME. hoạt động miễn là không có mã nuốt Lỗi mà không báo cáo lỗi đó. – jtahlborn
tôi đã tìm thấy một số API đầy hứa hẹn thông qua API công cụ java, nhưng tôi kết luận rằng bất kỳ giải pháp nào sẽ liên quan đến việc triển khai mã gốc trong một tác nhân dụng cụ, đó là "không đi" cho chúng tôi. – jtahlborn