Supervisor-java守护进程工具

    技术2022-07-17  76

    1、安装Python包管理工具(easy_install)

    yum install python-setuptools

    2、安装Supervisor

    easy_install supervisor

    3、配置Supervisor应用守护

    3.1 通过运行echo_supervisord_conf程序生成supervisor的初始化配置文件 mkdir /etc/supervisor echo_supervisord_conf > /etc/supervisor/supervisord.conf

    3.2 然后查看路径下的supervisord.conf。在文件尾部添加如下配置

    ... ;[include] ;files = relative/directory/*.ini ;conf.d 为配置表目录的文件夹,需要手动创建 [include] files = conf.d/*.conf

    3.3 为你的程序创建一个.conf文件,放在目录"/etc/supervisor/conf.d/"下

    [program:xxx] ;environment=JAVA_HOME=//jdk1.8.0/bin ; 这里可以创建环境变量 directory = /opt/4kgarden/java/xxx ; 程序的启动目录 command = java -jar -server -Xms256m -Xmx512m -Djava.io.tmpdir=/tmp -Djava.security.egd=file:/dev/./urandom sdk_server_java_hw-1.0.3.jar --spring.profiles.active=test -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:./gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./jvmlogs ; 启动命令,可以看出与手动在命令行启动的命令是一样的 autostart = true ; 在 supervisord 启动的时候也自动启动 startsecs = 30 ; 启动 30 秒后没有异常退出,就当作已经正常启动了 autorestart = true ; 程序异常退出后自动重启 startretries = 3 ; 启动失败自动重试次数,默认是 3 user = tomcat ; 用哪个用户启动 redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB stdout_logfile_backups = 20 ; stdout 日志文件备份数 ; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件) stdout_logfile = /opt/4kgarden/java/xxx/logs/start.log ;应用日志目录

    3.4 运行supervisord,查看是否生效,不报错就OK

    supervisord -c /etc/supervisor/supervisord.conf

    4、配置Supervisor开机启动

    4.1 /usr/lib/systemd/system/ 目录中新建一个“supervisord.service”文件

    # dservice for systemd (CentOS 7.0+) # by ET-CS (https://github.com/ET-CS) [Unit] Description=Supervisor daemon [Service] Type=forking ExecStart=/usr/local/bin/supervisord -c /etc/supervisor/supervisord.conf ExecStop=/usr/local/bin/supervisorctl shutdown ExecReload=/usr/local/bin/supervisorctl reload KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target

    4.2 开启开机启动 systemctl enable supervisord

    4.3 验证是否成功 systemctl is-enabled supervisord

    4.4 常用命令

    supervisorctl restart <application name> ;重启指定应用 supervisorctl stop <application name> ;停止指定应用 supervisorctl start <application name> ;启动指定应用 supervisorctl restart all ;重启所有应用 supervisorctl stop all ;停止所有应用 supervisorctl start all ;启动所有应用

    *4.5 *参考文档

    *4.6 解决unix:///tmp/supervisor.sock no such file的问题

    (1)修改路径 这里把所有的/tmp路径改掉,/tmp/supervisor.sock 改成 /var/run/supervisor.sock,/tmp/supervisord.log 改成 /var/log/supervisor.log,/tmp/supervisord.pid 改成 /var/run/supervisor.pid 要不容易被linux自动清掉

    (2)修改权限 sudo chmod 777 /run sudo chmod 777 /var/log 如果没改,启动报错 IOError: [Errno 13] Permission denied: ‘/var/log/supervisord.log’

    (3)创建supervisor.sock sudo touch /var/run/supervisor.sock sudo chmod 777 /var/run/supervisor.sock

    (4)启动supervisord,注意stop之前的实例或杀死进程 supervisord

    Processed: 0.009, SQL: 9