supervisord


supervisord 是Linux/Unix系統下的一個進程管理工具 

 

https://blog.csdn.net/fenglailea/article/details/77146248

 

[program:http-server]
command = /root/.nvm/versions/node/v9.11.1/bin/http-server /var/www/sui -s 
redirect_stderr=true
stdout_logfile=/var/www/sui.txt
environment=PATH="/root/.nvm/versions/node/v9.11.1/bin"

排錯記得寫上

redirect_stderr 

stdout_logfile



環境變量找不見時候記得加上
environment




Supervisor定期重啟指定進程

Supervisor是用Python開發的一個客戶機/服務器系統,允許用戶監視和控制UNIX類操作系統上的多個進程。功能包括監聽、啟動、停止、重啟一個或多個進程。當Supervisor管理的進程出現意外被Kill后,Supervisor監聽到事件會自動啟動該進程,不需要再寫其他腳本去進行重啟處理。

關於Supervisor的安裝及設定,可以參考Supervisor官網地址:http://supervisord.org/ 

Supervisor基本操作命令

1.啟動進程

supervisorctl -c /etc/supervisord.conf start program_name
  • 1

  
2.停止進程

supervisorctl -c /etc/supervisord.conf stop program_name
  • 1

  
3.重啟進程

supervisorctl -c /etc/supervisord.conf restart program_name
  • 1

  
4.啟動所有進程

supervisorctl -c /etc/supervisord.conf start all
  • 1

  
5.停止所有進程

supervisorctl -c /etc/supervisord.conf stop all
  • 1

 

Supervisor自動重啟機制

Supervisor的 autorestart 參數可以設置進程自動重啟的事件,一般設置為:

autorestart=unexpected
  • 1

當進程意外被kill或出現異常時,Supervisor會自動重啟該進程。

但如果Supervisor監控的進程出現內存泄漏或連接不自動釋放的情況,Supervisor並不會執行重啟,且Supervisor不支持定期自動重啟的方法。

因此當出現這種情況時,我們需要對某些進程進行定期自動重啟。 
  
 

Supervisor定期重啟指定進程方法

我們可以利用crontab來實現定期任務,設置如下:

例: 每小時重啟進程abc

0 * * * * supervisorctl -c /etc/supervisord.conf restart abc
  • 1

當對於某些會出現內存泄漏或連接不自動釋放的進程時,我們可以使用以上方法進行定期重啟,解決內存泄漏及釋放連接數。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM