本文參考自https://blog.csdn.net/fdipzone/java/article/details/80146558java
Supervisor是用Python開發的一個客戶機/服務器系統,容許用戶監視和控制UNIX類操做系統上的多個進程。功能包括監聽、啓動、中止、重啓一個或多個進程。當Supervisor管理的進程出現意外被Kill後,Supervisor監聽到事件會自動啓動該進程,不須要再寫其餘腳本去進行重啓處理。服務器
關於Supervisor的安裝及設定,能夠參考Supervisor官網地址:http://supervisord.org/ ide
Supervisor基本操做命令spa
1.啓動進程操作系統
supervisorctl -c /etc/supervisord.conf start program_name .net
2.中止進程rest
supervisorctl -c /etc/supervisord.conf stop program_name blog
3.重啓進程進程
supervisorctl -c /etc/supervisord.conf restart program_name事件
4.啓動全部進程
supervisorctl -c /etc/supervisord.conf start all
5.中止全部進程
supervisorctl -c /etc/supervisord.conf stop all
6.更新新的配置到supervisord
supervisorctl update
7.從新啓動配置中的全部程序
supervisorctl reload
Supervisor自動重啓機制
Supervisor的 autorestart 參數能夠設置進程自動重啓的事件,通常設置爲:
autorestart=unexpected
當進程意外被kill或出現異常時,Supervisor會自動重啓該進程。
但若是Supervisor監控的進程出現內存泄漏或鏈接不自動釋放的狀況,Supervisor並不會執行重啓,且Supervisor不支持按期自動重啓的方法。
所以當出現這種狀況時,咱們須要對某些進程進行按期自動重啓。
Supervisor按期重啓指定進程方法
咱們能夠利用crontab來實現按期任務,設置以下:
例: 每小時重啓進程abc
0 * * * * supervisorctl -c /etc/supervisord.conf restart abc
當對於某些會出現內存泄漏或鏈接不自動釋放的進程時,咱們能夠使用以上方法進行按期重啓,解決內存泄漏及釋放鏈接數。