侧边栏壁纸
博主头像
喵记博主等级

行动起来,活在当下

  • 累计撰写 18 篇文章
  • 累计创建 4 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Supervisor配置详解

张秋平
2024-03-08 / 0 评论 / 0 点赞 / 43 阅读 / 5385 字

Supervisor配置详解

supervisord.conf后台进程配置

这里通常保持默认即可

子进程(被supervisor所管理的进程)配置

program组

  • [program: xxxx]
    配置要管理的子进程的唯一名字

  • process_name
    进程名,默认值是%(program_name)s ,通常当numprocs为多个时需要设置此项来为每个子进程实例设置一个不同的名字标识

  • command
    进程的启动命令

  • numprocs
    启动进程的数量,当不为1时,就是进程池的概念,默认为1

  • directory
    进程运行前,会先切换到这个目录,默认不设置

  • umask
    进程掩码,默认为none

  • priority
    进程优先级,优先级低的,在启动时会被先启动,而关闭时会被后关闭。默认值为999

  • autostart
    是否跟随supervisord进程自动启动,设置为true时,在supervisord启动后会被自动自动,默认为true

  • autorestart
    设置子进程在意外退出时自动重启的情况。
    - false:无论什么情况下都不会被重新启动
    - unexpected:当进程的退出码不在exitcodes的定义中时,才会被重新启动
    - true:无条件重启

  • exitcodes
    autorestart=unexpected时,如果进程的退出码在这里有定义,则进程不会被自动重启,可以通过逗号分割来设置多个退出码

  • startsecs
    设置子进程启动多少秒之后,该子进程的状态由STARTING变为RUNNING,即认为子进程已经被启动成功。默认为1

  • startretries
    当进程启动失败后,最大尝试启动的次数,默认值为3,即超过3次后,子进程的状态将会被标记为FAIL而不会继续重新启动

  • stopsignal
    进程停止信号,可以为TERM,INT,QUIT,KILL,USR1,SR2等。默认为TERM,当用设置的信号去关闭子进程时,退出码会被认为是expected,即不会重新启动子进程

  • stopwaitsecs
    默认为10,当我们向子进程发送stopsignal信号后,到系统返回信息给supervisord所等待的最大时间。超过这个时间后,supervisord会向该进子进程发送一个强制kill的信号。

  • stopasgroup
    当supervisord所管理的子进程下还有它自己的子进程时,如果仅仅关闭supervisord所管理的这个子进程的话,子进程的子进程就有可能会变成孤儿进程。这个时候就可以通过设置这个选项,把该子进程一级它下面的所有子进程都关掉。设置为true时,一般killasgroup也会被设置为true。该选项默认发送的信号为stop信号

  • killasgroup
    和上面的stopasgroup类似,不过这个选项发送的是kill信号

  • user
    如果supervisord是root启动,我们在这里设置一个非root用户,可以通过该用户来管理该program。默认不设置

  • redirect_stderr
    为true时,会将子进程输出到stderr中的日志也重定向到stdout中,默认为false

  • stdout_logfile
    设置子进程stdout日志的输出路径,有三个可选值
    - AUTO:随机找一个地方生成日志文件,并且当supervisord重新启动时,之前的日志文件将会被清空
    - none:不输出日志文件
    - 指定具体的路径

  • stderr_logfile
    类似于上面的stdout_logfile,这里设置stderr日志的输出路径

  • stdout_logfile_maxbytes
    单个日志文件的最大大小。默认为50MB

  • stderr_logfile_maxbytes
    类似于上面的stdout_logfile_maxbytes

  • stdout_logfile_backups
    一共保存的日志文件的数量,默认为10个

  • stderr_logfile_backups
    类似于上面的stdout_logfile_backups

  • stdout_capture_maxbytes
    设定capture管道的大小,当值不为0的时候,子进程可以从stdout发送信息,而supervisor可以根据信息,发送对应的event。默认为0,即关闭管道

  • stderr_capture_maxbytes
    类似于上面的stdout_capture_maxbytes

  • stdout_events_enabled
    设置为true时,当子进程有stdout向文件描述符中写日志的时候,将触发supervisord发送PROCESS_LOG_STDOUT类型的event,默认为false

  • stderr_events_enabled
    类似于上面的stdout_events_enabled

  • environment
    设置子进程的环境变量,和其它的子进程不共享。如A="a", B="b"

  • serverurl
    默认为AUTO

eventlistener组

  • [eventlistener: xxxxx]
    时间监听名,这个东西和program的地位是一样的, 也是由supervisor启动的子进程,不过它的工作是负责订阅supervisord发送的event。可以在收到event时在这个子进程里面做一系列的处理

  • command
    和上面的program一样,表示listener的可执行文件的路径

  • process_name
    进程名,通常当numprocs为多个的时候需要设置此项

  • numprocs
    启动的listener的数量

  • events
    event事件的类型,也就是说,只有设置在这里的事件类型才会被发送

  • buffer_size
    event队列的缓存大小,如果超过这里设置的数量时,最旧的event将会被清楚,然后把新的event放进去

  • directory
    进程启动前将会切换到这里设置的目录。默认不设置

  • umask
    进程掩码,默认为none

  • priority
    启动优先级,默认为-1

  • autostart
    是否随着supervisord一起启动

  • autorestart
    同上

  • startsecs
    同上

  • startretries
    同上

  • exitcodes
    同上

  • stopsignal
    同上

  • stopwaitsecs
    同上

  • stopasgroup
    同上

  • killasgroup
    同上

  • user
    同上

  • redirect_stderr
    同上

  • stdout_logfile
    同上

  • stdout_logfile_maxbytes
    同上

  • stdout_logfile_backups
    同上

  • stderr_logfile

  • 同上

  • stderr_logfile_maxbytes
    同上

  • stderr_logfile_maxbytes
    同上

  • environment
    同上

  • serverurl
    同上

group组

  • [group:xxxx]

  • 给program分组,换分到组里面的program就可以通过group名来统一操作。当program被划分到组里面之后,就相当于原来的配置从supervisor的配置文件消失了。supervisor只会对组进行管理,而不会再对组里面的单个program进行管理了

  • programs
    设置组成员,用逗号分开

  • priority
    组和组之间的优先级

include组

  • [include]
    引入其它配置文件

0

评论区