Supervisor 使用教程
-
安装
-
改配置文件和写服务配置文件
在/etc/supervisor 下有一个supervisor.conf
遇到的问题:
在启动后会内存会一直在涨,服务正常启动越占用2G左右,但是使用supervisor后会吃满内存。
解决方法:
相似问题:https://blog.csdn.net/wangsenling/article/details/109229236
原因是supervisor默认只强制kill主进程,而主进程还没来得及向自己开启的子进程发起停止信号时,就被干掉了,导致子进程称为孤儿进程,杀都杀不掉,子进程之间又互相拉起;
解决方案,在supervisor配置文件中,添加两行:
干掉进程开启的子进程
stopasgroup=true killasgroup=true
后面supervisor.conf文件如下所示:
; supervisor config file [unix_http_server] file=/var/run/supervisor.sock ; (the path to the socket file) chmod=0700 ; sockef file mode (default 0700) [supervisord] logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log) pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP) ; the below section must remain in the config file for RPC ; (supervisorctl/web interface) to work, additional interfaces may be ; added by defining them in separate rpcinterface: sections [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket stopasgroup=true killasgroup=true ; The [include] section can just contain the "files" setting. This ; setting can list multiple files (separated by whitespace or ; newlines). It can also contain wildcards. The filenames are ; interpreted as relative to this file. Included files *cannot* ; include files themselves. [include] files = /etc/supervisor/conf.d/*.conf
altest.conf文件
[program:altest] directory=/home/gs/test/projects/test; command=/bin/bash /home/gs/test/projects/test/start.sh ; numprocs=1 ; user=robot ; autostart=true ; autorestart=true ; stopsignal=KILL ; exitcodes=0 ; startsecs=5 ; redirect_stderr=true ; stdout_logfile=/home/gs/test/projects/test/homeout.log ;