[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).
[erlang]supervisor(监控树)的重启策略的更多相关文章
- [Erlang13]怎么把一个普通的进程挂入Supervisor监控树?
简单来说:应该是在调用的start_link返回一个{ok,Pid}就可以把这个进程放入监控树Supervisor里面: -module(worker). -author("zhongwen ...
- erlang supervisor说明
Supervisor Behaviour是一个用来实现一个supervisor进程来监控其他子进程的模块 子进程可以是另一个supervisor,也可以是一个worker进程. worker进程一般使 ...
- tomcat监控,自动重启shell脚本
tomcat监控,自动重启shell脚本如下,取名 monitor_tomcat.sh: #!/bin/sh # func:自动监控tomcat脚本并且执行重启操作 # 获取tomcat进程ID(其中 ...
- Flink重启策略
戳更多文章: 1-Flink入门 2-本地环境搭建&构建第一个Flink应用 3-DataSet API 4-DataSteam API 5-集群部署 6-分布式缓存 7-重启策略 8-Fli ...
- k8s重启策略
Pod 的重启策略有 3 种,默认值为 Always. Always : 容器失效时,kubelet 自动重启该容器: OnFailure : 容器终止运行且退出码不为0时重启: Never : 不论 ...
- (转)Docker容器的重启策略及docker run的--restart选项详解
1. Docker容器的重启策略 Docker容器的重启策略是面向生产环境的一个启动策略,在开发过程中可以忽略该策略. Docker容器的重启都是由Docker守护进程完成的,因此与守护进程息息相关. ...
- Docker Kubernetes 容器重启策略
Docker Kubernetes 容器重启策略 当容器被创建时,容器会根据重启策略来进行容器重启. 支持三种策略: Always:当容器终止退出后,总是重启容器,默认策略. OnFailure:当容 ...
- .net core i上 K8S(四).netcore程序的pod管理,重启策略与健康检查
上一章我们已经通过yaml文件将.netcore程序跑起来了,但还有一下细节问题可以分享给大家. 1.pod管理 1.1创建pod kubectl create -f netcore-pod.yaml ...
- Docker容器的重启策略及docker run的--restart选项详解
https://blog.csdn.net/taiyangdao/article/details/73076019 1. Docker容器的重启策略 Docker容器的重启策略是面向生产环境的一个启动 ...
随机推荐
- webform JS打印方法
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DaYin.aspx.cs&qu ...
- Centos下安装Mongodb
转自:http://nnzhp.cn/article/10/ Mongodb是一种nosql类型的数据库,高性能.易部署.易使用的特点在IT行业非常流行. 下面介绍一下mongodb的安装方式,这里我 ...
- NTFS u盘支持 - centos6
uname -r bash-4.1# uname -r2.6.32-431.el6.x86_64 ---- http://repository.it4i.cz/mirrors/repoforge/re ...
- VUE 入门基础(3)
三,模板语法 Vue将模板编译成虚拟DOM渲染函数,结合响应系统,在应用状态改变时,vue能够智能地计算出重新渲染组件的最小代价并DOM操作上. 插值,文本 数据绑定常见的形式就是使用"Mu ...
- XML.04-dom4j和XPath
body,td { font-family: calibri; font-size: 10pt } XML.04-dom4j和XPath dom4j的基本使用 XPath 啥是XPath XPath语 ...
- Python语法三
1. from os.path import exists import 了又一个很好用的命令 exists.这个命令将文件名字符串作为参 数,如果文件存在的话,它将返回 True,否则将返回 Fal ...
- Python全栈开发day8
一.python生成/迭代器 yiled生成数据 python迭代器, 访问数据(通过next一次一次去取) 二.反射 通过字符串的形式,导入模块 通过字符串的形式,到模块中,寻找指定的函数,并执行 ...
- GitHub上最火的40个Android开源项目
http://www.csdn.net/article/2013-05-03/2815127-Android-open-source-projects
- CSS3实现Loading效果
使用Loding的gif图,每一帧图片的外层会有白色描边.所以如果必须使用gif图的话,请将背景色设置为白色. 你也尝试用以下方法,使用css来实现loading的效果 1. 适用于pc端.在移动端上 ...
- linux默认网关的设置
linux装系统设IP,这应该是系统管理员的基本功,可是不同的网络结构有不同的ip设法,您知道吗? 1.一块网卡的情况 这个没啥好说的,估计地球人都知道:address,netmask,gatew ...