supervisor支持的信号:TERM,HUP,INT,QUIT,KILL,USR1或USR2中的任何一个,分别对应内核级信号:SIGTERM,SIGHUP,SIGINT,SIGQUIT,SIGKILL,SIGUSR1,SIGUSR2
其中,USR1信号将导致以下步骤的发生:
- 停止接受新的连接
- 等待当前连接停止
- 重新载入配置文件,重新打开日志文件,重启服务器,从而实现相对平滑的不关机的更改。
注:首先要与研发沟通,确保所启动的服务支持捕获内核级Kill信号(比如是支持HUP还是支持INT),研发若有捕获,则会在捕获前落地内存中缓存的数据,确保数据不丢失。之后修改supervisor的xxx服务启动配置文件
1 | 以USR1为例,新增如下行 |
stopsignal含义:
1 | 使用SIGUSR1信号来stop |
stopwaitsecs含义:
1 | 在向程序发送停止信号后,等待操作系统将SIGCHLD返回给supervisor的秒数。如果超过了这个时间仍未收到SIGCHLD,最终将会使用SIGKILL来杀掉进程。默认值:10秒 |
stopasgroup含义:
1 | 将停止信号发送到整个过程组,使程序将停止信号成为孤立状态 |
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2021/03/16/supervisor之kill信号/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!