2012-09-24 25 views
19

Tôi đang sử dụng Trình giám sát (3.0a12) trên ubuntu 12.04 để quản lý các công nhân thiết bị php. Đôi khi các công nhân bị bắt trong một trạng thái kỳ lạ, nơi họ sử dụng tấn cpu và ram. Trong khi tôi đang tìm ra vấn đề này, tôi nghĩ sẽ rất tuyệt khi Giám sát viên tự động giết và làm mới công nhân thỉnh thoảng. Tôi đã xem http://supervisord.org/configuration.html tài liệu cấu hình và dường như không thấy bất kỳ tùy chọn nào cho phép điều này.Yêu cầu Giám sát Định kỳ khởi động lại các tiến trình con

Có ai biết liệu có thể giám sát định kỳ khởi động lại tất cả các quy trình mà nó chi phối không?

Trả lời

20

superlance package cung cấp memmon plugin cho người giám sát. memmon theo dõi mức sử dụng bộ nhớ cho các chương trình dưới sự kiểm soát của người giám sát.

Bạn cấu hình memmon như một eventlistener giám sát:

[eventlistener:memmon] 
command=memmon -a 200MB 
events=TICK_60 

Các bộ cấu hình ở trên memmon để khởi động lại bất kỳ chương trình dưới sự kiểm soát giám sát nếu nó vượt quá sử dụng bộ nhớ 200MB. Nó kiểm tra mỗi 60 giây.

Bạn có thể định cấu hình ghi nhớ để theo dõi các chương trình hoặc nhóm chương trình cụ thể, đặt giới hạn cho từng nhóm.

+0

Nếu tôi sử dụng Supervisor có sử dụng một quá trình như "Xvfb-chạy" mà bắt đầu một tiến trình khác, nói Á hậu xul, sau đó không memmon chỉ ghi lại những ký ức đó đang được sử dụng bởi Xvfb, hoặc tất cả các tiến trình con? – CMCDragonkai

+0

Nó sẽ chỉ giám sát các quy trình con trực tiếp, tôi tin. Các trạng thái thủ công: *** memmon ** không có khả năng giám sát trạng thái tiến trình của các tiến trình mà không phải là các tiến trình con ** giám sát. * Trình xul không phải là con của người giám sát, mà là xvfb-run. –

+0

Có công việc nào không? – CMCDragonkai

20

Bạn có thể sử dụng crontab để chuyển lệnh trực tiếp đến supervisorctl. Ví dụ, sau đây sẽ khởi động lại một quá trình mỗi 20 phút.

0,20,40 * * * * /path/to/supervisorctl restart [supervisor_process] 
+0

Điều này sẽ khởi động lại quá trình nhưng tôi sẽ nghi ngờ nó sẽ giết có thể chạy quá trình tốt quá, do đó có thể dẫn đến mất dữ liệu với những người. (ví dụ: với quy trình công nhân không chỉ là ứng dụng không quốc tịch) – tristanbailey

+1

Quá trình chết vì nhiều lý do: mạnh mẽ chống lại các lần khởi động lại bất ngờ là điều quan trọng. Vì vậy, nếu chiến lược này sẽ gây ra mất dữ liệu, đó là một lỗi, có hoặc không sử dụng cron để đạt được điều này là giải pháp đúng. – jma

Các vấn đề liên quan