supervisor重啟服務失敗


問題:supervisorctl restart 服務名 失敗

案例:

[root@node203 ~]# supervisorctl status
etcd-server-97-203 RUNNING pid 7706, uptime 14:29:46
kube-apiserver-97-203 FATAL Exited too quickly (process log may have details)

查看supervisor日志:
tail -f /var/log/supervisor/supervisord.log
entered FATAL state, too many start retries too quickly
說明:從報錯信息看出,是該服務重啟次數太多,因為在配置中有參數:
startretries = 5
這個參數是在服務重啟失敗后,嘗試重啟的次數,所以supervisor一直在重啟,然后一直失敗,達到最大次數就報以上的錯誤

查看kube-apiserver服務日志:
error: failed to create listener: failed to listen on 127.0.0.1:8080: listen tcp 127.0.0.1:8080: bind: address already in use

提示監聽端口已存在,這時候我們執行以下操作:
netstat -tnlp
ps -ef|grep api-server

果然,該進程並沒有完全停止,可以臨時采用kill 進程號停止,然后再supervisorctl start 服務名,成功

或者

為了避免在重啟的時候出現端口存在(默認supervisord不會stop子進程),需要在/etc/supervisord.d/*.ini   該服務的.ini配置文件中添加以下兩項:
stopasgroup=true
#這個東西主要用於,supervisord管理的子進程,這個子進程本身還有,子進程。那么我們如果僅僅干掉supervisord的子進程的話,子進程的子進程,有可能會變成孤兒進程。所以咱們可以設置可個選項,把整個該子進程的,整個進程組都干掉。 設置為true的話,一般killasgroup也會被設置為true。需要注意的是,該選項發送的是stop信號,默認為false。。非必須設置。
killasgroup=true

改好后,記得supervisorctl update

#https://www.cnblogs.com/liucx/

切記不要使用 supervisorctl restart,restart是重啟所有項目服務,可能導致整個集群服務掛了
建議:使用systemd方式啟動


免責聲明!

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



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