Gần đây tôi đã chạy vào một lỗi khi cả một ứng dụng Erlang chết, năng suất nhắn log trông như thế này:Tự động khởi động lại ứng dụng Erlang
=INFO REPORT==== 11-Jun-2010::11:07:25 ===
application: myapp
exited: shutdown
type: temporary
Tôi không có ý tưởng những gì kích hoạt tắt máy này, nhưng vấn đề thực sự tôi có là nó đã không tự khởi động lại. Thay vào đó, máy ảo Erlang hiện đang trống rỗng chỉ ngồi đó không làm gì cả.
Bây giờ, từ các nghiên cứu tôi đã thực hiện, có vẻ như có khác "bắt đầu loại" bạn có thể đưa ra một ứng dụng: 'thoáng' và 'vĩnh cửu'.
Nếu tôi bắt đầu một Supervisor trong một ứng dụng, tôi có thể nói nó để thực hiện một quy trình cụ thể thoáng qua hoặc vĩnh viễn, và nó sẽ tự động khởi động lại nó cho tôi. Tuy nhiên, theo các tài liệu, nếu tôi thực hiện một ứng dụng thoáng qua hoặc vĩnh viễn, nó không khởi động lại nó khi nó chết, mà đúng hơn là nó giết chết tất cả các các ứng dụng khác nữa.
Những gì tôi thực sự muốn làm là bằng cách nào đó nói với Erlang VM rằng một ứng dụng cụ thể nên luôn luôn chạy, và nếu nó đi xuống, khởi động lại nó. Đây có phải là có thể làm gì?
(Tôi không nói về việc triển khai người giám sát ở đầu đơn đăng ký của mình, vì đó là điểm bắt 22: nếu quá trình giám sát của tôi bị treo? Tôi đang tìm một số loại API hoặc cài đặt mà tôi có thể sử dụng để có theo dõi Erlang và khởi động lại ứng dụng của tôi cho tôi.)
Cảm ơn!
Tuyệt vời, cảm ơn rất nhiều vì câu trả lời của bạn. Tôi thấy bây giờ lý do nó chết thực sự là vì giới hạn khởi động lại tối đa đã được nhấn. Tôi không nhất thiết muốn chỉ cần vô hiệu hóa rằng mặc dù, vì nếu nó thực sự được vào một vòng lặp khởi động lại sau đó chúng tôi có thể cần phải khởi động lại toàn bộ ứng dụng. Có cách nào để khởi động lại ứng dụng nếu giới hạn AllowedRestarts/MaxSeconds được nhấn hay không, thay vì tắt ứng dụng? – Nick
Trong trường hợp bạn mô tả bạn sẽ thêm người giám sát cho người giám sát của bạn. Hành vi mà OTP sử dụng là khi tín hiệu thoát được gửi đến quá trình thực hiện cuộc gọi bắt đầu đến ứng dụng (tức làkhi giám sát viên cấp cao chết), giả định rằng ứng dụng đã không sửa được lỗi và nó sẽ tắt ứng dụng và có thể nút phụ thuộc vào cấu hình. Tôi đoán điểm là các ứng dụng của bạn sẽ không bị lỗi, và nếu chúng thực hiện các lỗi nghiêm trọng, đủ để chỉ được giải quyết bằng cách khởi động lại nút. – Lukas
Liên kết là 404 - bất kỳ ai có cập nhật ....? – jisaacstone