Làm thế nào để tôi chọn giữa upstart, runit, giám sát viên, daemontools, v.v. để khởi động lại một quy trình nếu nó chết?


13

Tôi có proxy web Nginx, máy chủ web gunicorn và ứng dụng web python / Vase. Quá trình Gunicorn rõ ràng đã chết và tôi muốn cải thiện điều đó trong tương lai bằng cách xem xét một tiện ích có thể theo dõi và khởi động lại quá trình gunicorn trong trường hợp nó gặp sự cố một lần nữa.

Tôi đã tìm thấy một số có thể thực hiện công việc:

  • mới bắt đầu
  • runit
  • giám sát viên
  • daemontools
  • nhiều hơn nữa

Có một bài viết toàn diện so sánh và đối chiếu các tiện ích khác nhau được sử dụng để theo dõi và khởi động lại một quy trình không?


2
Bạn thực sự nên giám sát các dịch vụ này từ bên ngoài hộp, vì các tình huống sẽ phát sinh khi bạn vào vòng lặp khởi động lại và tiêu thụ tất cả các tài nguyên có sẵn trên máy chủ của bạn.
EEAA

Viết mã của riêng bạn để làm điều đó chính xác theo cách bạn muốn. Đó là một nhiệm vụ dễ dàng.
Ryan Babchishin

Câu trả lời:


3
  • runitlà một sự kế thừa daemontools(cả hai được viết bằng c)

  • supervisordsử dụng python.

Tôi đã sử dụng runitvới socklogcủa cùng tác giả bên Alpine Linux lxc container với giá khoảng 10 tháng để quản lý web/ database& dịch vụ khác. Đó là ánh sáng, dễ quản lý và tôi đã không có lỗi dịch vụ. Trình nền đăng nhập cũng chạy như người dùng của chính nó & không rootđẹp.

voidlinux sử dụng runitnhư inithệ thống của nó và cũng để giám sát dịch vụ (tìm kiếm cây gói cho runcác tệp để biết ví dụ về các runittập lệnh).


2

Nếu distro của bạn sử dụng Upstart, hãy đi với nó. Nó có hỗ trợ rất cơ bản để khởi động lại công việc, nhưng bao gồm các giới hạn có thể ngăn chặn vòng lặp khởi động lại, như được đề cập bởi @EEAA.

Nếu hệ điều hành của bạn sử dụng chương trình init khác, đừng thay đổi nó. Tôi thực sự không thể giúp bạn với các công cụ khác mà bạn đã đề cập, vì tôi thường sử dụng Ubuntu khi Upstart vẫn còn (kể từ LTS mới nhất), vì vậy tôi không có liên quan gì đến chúng. Nhưng đó không phải là một nhiệm vụ khó khăn để tạo ra một tập lệnh đơn giản chạy từ cron mỗi phút một lần (hoặc thường xuyên hơn là một vòng lặp), có thể kiểm tra xem có tồn tại một PID hay không và khởi động lại khi thất bại.

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.