erlang服务启动与热更纪要

本文详细介绍了Erlang在启动时如何通过-pa参数设置codepath,以及使用-s参数执行初始化函数。讨论了Erlang应用与模块的映射关系,并阐述了热更新过程,包括soft_purge和load_file步骤。在热更新中,如果存在旧代码被使用,会进行进程清理以确保更新成功。首次热更新由于没有旧状态,因此总是能成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.erlang启动时直接设置-pa参数,指定code path,也就是各个model编译出来的beam文件的目录

2.erlang启动时-s参数,系统初始化的时候执行的启动函数,可以写多个,按先后顺序执行,是MFA格式

3.启动后,就建立了app<--->module的映射,一个app中加载了哪些module可以通过code:all_loaded()函数打印出来

4.热更有时,通过erl_call的code命令来操作

1)soft_purge,如果当前没有进程用到module的old代码,那就直接将module的old版本删除,将current代码转变为old版本,否则返回false

2)load_file,加载新的module代码当做current版本,如果此时发现还有old版本,那就直接报错not_purged

其中第一步如果是purge,那么如果发现有进程正在用old代码,直接kill进程 ,然后将old代码删除,将current转为old。

刚启动后的第一次热更,因为没有old状态,所以肯定可以热更成功,当前代码转换为old,新代码变成current。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值