ฉันจะเลือกระหว่าง upstart, runit, supervisor, daemontools และอื่น ๆ เพื่อเริ่มกระบวนการใหม่ได้อย่างไรถ้ามันตาย


13

ฉันมีเว็บพร็อกซี่ Nginx เว็บเซิร์ฟเวอร์ Gunicorn และเว็บแอพไพ ธ อน / ขวด เห็นได้ชัดว่ากระบวนการของ Gunicorn นั้นตายไปแล้วและฉันต้องการแก้ไขให้ดีขึ้นในอนาคตโดยการค้นหายูทิลิตี้ที่สามารถตรวจสอบและเริ่มกระบวนการ Gunicorn ในกรณีที่เกิดปัญหาอีกครั้ง

ฉันพบหลายอย่างที่สามารถทำงานได้:

  • พุ่งพรวด
  • runit
  • ผู้ดูแล
  • daemontools
  • อื่น ๆ อีกมากมาย

มีบทความที่ครอบคลุมที่เปรียบเทียบและแตกต่างสาธารณูปโภคต่าง ๆ ที่ใช้ในการตรวจสอบและเริ่มกระบวนการใหม่หรือไม่?


2
คุณควรตรวจสอบบริการเหล่านี้จากนอกกรอบเนื่องจากสถานการณ์จะเกิดขึ้นเมื่อคุณเข้าสู่ลูปรีสตาร์ทและใช้ทรัพยากรที่มีอยู่ทั้งหมดบนเซิร์ฟเวอร์ของคุณ
EEAA

เขียนรหัสของคุณเองเพื่อทำตามที่คุณต้องการ มันง่ายมาก
Ryan Babchishin

คำตอบ:


3
  • runitเป็นตัวตายตัวแทนต่อdaemontools(ทั้งสองเขียนไว้ในc)

  • supervisordpythonการใช้งาน

ผมเคยใช้runitกับsocklogโดยผู้เขียนคนเดียวกันภายในอัลไพน์ลินุกซ์ lxcภาชนะบรรจุรอบ 10 เดือนในการจัดการweb/ databaseและบริการอื่น ๆ อีกมากมาย มันเบาง่ายต่อการจัดการ & ฉันไม่มีบริการที่ล้มเหลว ภูตการบันทึกยังทำงานในฐานะผู้ใช้ของตัวเอง & ไม่rootดี

voidlinuxใช้runitเป็นinitระบบและเพื่อการดูแลบริการ (ค้นหาแผนผังแพ็กเกจสำหรับrunไฟล์สำหรับตัวอย่างของrunitสคริปต์)


2

ถ้า distro ของคุณใช้งานพุ่งพรวดให้ไปกับมัน มันมีการสนับสนุนขั้นพื้นฐานมากสำหรับการรีสตาร์ทงาน แต่มีข้อ จำกัด ที่สามารถป้องกันไม่ให้รีสตาร์ทลูปตามที่ระบุโดย @EEAA

หากระบบปฏิบัติการของคุณใช้โปรแกรมเริ่มต้นอื่นห้ามเปลี่ยน ฉันไม่สามารถช่วยคุณได้ด้วยเครื่องมืออื่น ๆ ที่คุณพูดถึงเพราะโดยทั่วไปฉันใช้ Ubuntu ที่ยังมี Upstart อยู่ (จาก LTS ล่าสุด) ดังนั้นฉันจึงมีส่วนเกี่ยวข้องกับมันเล็กน้อย แต่มันไม่ใช่งานยากที่จะสร้างสคริปต์ง่าย ๆ ซึ่งทำงานจากcronหนึ่งครั้งต่อนาที (หรือบ่อยครั้งกว่าในเช่น. a loop) ซึ่งสามารถตรวจสอบว่ามี PID อยู่หรือไม่และเริ่มต้นใหม่เมื่อเกิดข้อผิดพลาด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.