erlang]supervisor(监控树)的重启策略

简介:

1. init函数

init() ->
    {ok, {SupFlags, [ChildSpec,...]}} | ignore.

[ChildSpec,...] 是在init之后默认要启动的子进程。

2. SupFlags参数

{Type, Times, Sec}

  • Type: 重启策略
    • one_for_one: 一个子进程终止,只重启该进程,在init的时候会启动参数内的子进程
    • simple_one_for_one: 同one_for_one,但是在init的时候不会启动子进程,需要动态调用启动
    • one_for_all: 一个子进程终止,将重启所有子进程
    • rest_for_one: 一个子进程终止,将按顺序重启这个子进程和之后顺序的子进程
  • Times: 次数(监控频率)
  • Sec: 秒数(监控频率),如果在Sec秒内重启次数超过Times,则终止所有进程,并终止监控树,将由父进程决定它的命运

3. ChildSpec参数如下

{Id, StartFunc, Restart, Shutdown, Type, Modules}

%% 或者

#{
    id => child_id(),
    start => mfaargs(),
    restart => restart(),
    shutdown => shutdown(),
    type => work(),
    modules => modules()
}
  • Id 子进程ID标识符
  • StartFunc = {M, F, A}: 子程序启动入口
  • Restart: 重启方案
    • permanent: 如果app终止了,整个系统都会停止工作(application:stop/1除外)。
    • transient: 如果app以normal的原因终止,没有影响。任何其它终止原因都谁导致整个系统关闭。
    • temporary: app可以以任何原因终止。只产生报告,没有其它任何影响。
  • Shutdown: 终止策略
    • brutal_kill: 无条件终止
    • 超时值(毫秒): 终止时,如果超时,则强制终止
    • infinity: 如果子进程是监控树,设置为无限大,等待其终止为止
  • Type:
    • worker: 普通子进程
    • supervisor: 子进程是监控树
  • Modules:
    • dynamic: 当子进程是gen_event
    • [Module]: 当子进程是监控树、gen_server或者gen_fsm,表示回调模块名称

4. 监控树操作

Sup通常可以为?MODULE

% 启动监控树
supervisor:start_link(Sup, []).

% 启动一个子进程
supervisor:start_child(Sup, ChildSpec).

% 停止一个子进程
supervisor:terminate(Sup, Id).

% 删除一个子进程
supervisor:delete_child(Sup, Id).  ,如需转载请自行联系原作者
相关文章
|
XML 存储 监控
ganglia的安装与配置过程
一、Ganglia 监控管理端配置 二、Ganglia的客户端配置 三、Ganglia web端配置
ganglia的安装与配置过程
|
5月前
|
数据可视化 API 开发工具
详细解读cesi+supervisor可视化集中管理服务器节点进程
详细解读cesi+supervisor可视化集中管理服务器节点进程
93 0
|
运维 安全 Java
Elasticsearch生产集群部署之各个节点以daemon模式运行以及优雅关闭
Elasticsearch生产集群部署之各个节点以daemon模式运行以及优雅关闭
|
Java
白话Elasticsearch71-ES生产集群部署之各个节点以daemon模式运行以及优雅关闭
白话Elasticsearch71-ES生产集群部署之各个节点以daemon模式运行以及优雅关闭
117 0
|
人工智能 小程序 Shell
开源shell脚本系列-检查etcd集群可用性
开源shell脚本系列-检查etcd集群可用性
|
缓存 编解码 安全
18.9 SELinux auditd日志系统的安装与启动
当查看特定安全上下文的策略规则时,SELinux 会使用被称为 AVC(Access Vector Cache,访问矢量缓存)的缓存,如果访问被拒绝(也被称为 AVC 拒绝),则会在一个日志文件中记录下拒绝消息。
346 0
18.9 SELinux auditd日志系统的安装与启动
|
运维 监控 Java
shell脚本配合zabbix实现tomcat的故障自愈
shell脚本配合zabbix实现tomcat的故障自愈 1.背景及实现方式方法 Tomcat运行JAVA类的程序代码经常会导致内存溢出,往往都是收到告警后再去处理,收到报警再处理就会拖延故障解决的时间,因此就需要靠故障自愈的机制来解决人为干预的成本。
425 0
shell脚本配合zabbix实现tomcat的故障自愈
|
监控
【Zabbix】排错:zabbix分部署服务器监控部署后Server进程过多
部署完zabbix服务端后,Zabbix Server进程过多警告
790 0
【Zabbix】排错:zabbix分部署服务器监控部署后Server进程过多
|
Linux
使用systemd管理Yii2(或其他)队列服务,实现故障重启、开机自启动等功能
以Centos7为例 在 /usr/lib/systemd/system 目录新建 queue.service 文件 [Unit] Description=Yii Queue Server After=network.
2815 0