Bagaimana saya memilih antara pemula, runit, pengawas, daemontools, dan lain-lain untuk memulai kembali proses jika mati?

13

Saya memiliki proxy web Nginx, server web gunicorn, dan aplikasi web python / flask. Proses Gunicorn rupanya mati, dan saya ingin memperbaiki itu di masa depan dengan melihat ke utilitas yang dapat memantau dan memulai kembali proses gunicorn jika terjadi crash lagi.

Saya telah menemukan beberapa yang dapat melakukan pekerjaan:

  • pemula
  • menjalankannya
  • pengawas
  • daemontools
  • masih banyak lagi

Apakah ada artikel komprehensif yang membandingkan dan membedakan berbagai utilitas yang digunakan untuk memantau dan memulai kembali suatu proses?

Matthew Moisen
sumber
2
Anda harus benar-benar memantau layanan ini dari luar kotak, karena situasi akan muncul di mana Anda masuk ke loop restart dan mengkonsumsi semua sumber daya yang tersedia di server Anda.
EEAA
Tulis kode Anda sendiri untuk melakukannya persis seperti yang Anda inginkan. Ini tugas yang mudah.
Ryan Babchishin

Jawaban:

3
  • runitadalah penerus daemontools(keduanya ditulis dalam c)

  • supervisordmenggunakan python.

Saya telah menggunakan runitdengan socklogpenulis yang sama di dalam wadah Alpine Linux lxc selama sekitar 10 bulan untuk mengelola web/ database& berbagai layanan lainnya. Ringan, mudah dikelola & saya tidak mengalami kegagalan layanan. Daemon logging juga berjalan seperti miliknya sendiri & tidak rootbagus.

voidlinux digunakan runitsebagai initsistemnya & juga untuk pengawasan layanan (cari pohon paket rununtuk contoh runitskrip).

Stuart Cardall
sumber
2

Jika distro Anda menggunakan pemula, ikuti saja. Ini memiliki dukungan yang sangat mendasar untuk memulai kembali pekerjaan, tetapi mencakup batas yang dapat mencegah dari memulai kembali loop, seperti yang disebutkan oleh @EEAA.

Jika OS Anda menggunakan program init lain, jangan mengubahnya. Saya benar-benar tidak dapat membantu Anda dengan alat-alat lain yang Anda sebutkan, karena saya biasanya menggunakan Ubuntu di mana Upstart masih ada (pada LTS terbaru), jadi saya tidak ada hubungannya dengan mereka. Tapi itu bukan tugas yang sulit untuk membuat skrip sederhana yang dijalankan dari cron satu menit sekali (atau lebih sering dalam. A loop), yang dapat memeriksa apakah ada PID dan masalah restart pada kegagalan.

sam_pan_mariusz
sumber