erl 启动参数记录

本文介绍了Erlang的启动参数,包括以+开头的Emulator Flags,-开头的Flag参数,以及--extra或--flag标记的User Flag。重点讲解了-config、-eval、-hidden、-name、-noinput、-noshell、-pa、-remsh、-s Mod、-setcookie等参数的用途,以及+A、+K、+P、+pc、+Q、+sub、+spp等Emulator Flags的含义,帮助理解Erlang系统启动和运行时的行为。

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

参考资料:
http://www.cnerlang.com/erts-8.1/doc/html/erl.html
https://blog.csdn.net/erlib/article/details/50248939

part1: 介绍

erlang启动参数分为3种:

  1. 以 + 开头的为emulator flag,用于控制erl模拟器(交互界面)的行为.
  2. 以 - 开头的为flag, 主要是传给erl运行时系统,例如传给init/3函数.
  3. 以 --extra 或者 --flag标记开始的为 plain arguments, 即user flag, 存储在init 进程, 可以通过
    init:get_plain_arguments()获得.

part2: 主要Flag参数介绍

  • -config Config: 加载指定的配置文件, Config.config.
  • -eval Expr(init flag): 模拟器启动时, 执行表达式作为启动参数.
  • -extra(init flag: 后面跟的都是普通参数,以空格隔开,在启动后,可以使用init:get_plain_arguments()获得参数列表.
  • -hidden [true|false]: 设置为隐藏节点,该节点依然会连接集群的所有节点,但是在其他节点执行nodes/0,不会列出它.
    这样就减少节点全联通带来的的巨大通信成本, 不会造成网络风暴.
    http://blog.yufeng.info/archives/2650
  • -name: 给节点设置名字,形式一般是 Name@Host, Host在网段内是完全限定名,例如局域网内的127.0.0.1,如果是跨网段,则需要使用公网的ip; 如果使用短名字,则使用-sname.
  • -noinput: 告知erlang运行系统无须读取任何外部输入.
  • -noshell: 不带有shell的情况下启动erlang系统,让erts成为unix的一个管道.
  • -pa Dir1 Dir2 … : 增加指定目录作为二进制代码路径.
  • -remsh Node: 启动一个erlang shell连接远程节点.
    usage: erl -name 2@127.0.0.1 -setcookie 123456 -remsh 1@127.0.0.1
  • -s Mod [Fun [Arg1, Arg2, …] : init首先调用的函数,相当于整个erts的入口函数(类似于c++的main()),Fun不填写的话,默认是start,Arg不填写默认是0个参数. ps: -s参数可以在一次启动中多次使用.
  • -setcookie: 设置节点的magic cookie, 只有cookie相同的节点才能形成集群,进行互联.
  • -boot File 指定启动使用的boot文件,默认是 $ROOT/bin/start.boot,在这个目录下还有start_clean.boot,start_sasl.boot。如果需要sasl的话,就 -boot start_sasl;-boot_var Var Dir 代替$ROOT用的;
  • -smp [enable|auto|disable]: 表示启动的erts是否需要支持smp,开启可以提高任务调度效率.
    http://shiningray.cn/some-facts-about-erlang-and-smp.html

part3: 主要Emulator Flags参数介绍

  • +A size: 设置异步线程池大小,一般不用设置该参数,erts会根据操作系统硬件信息自行设置.
  • +K true | false 是否开启kernelpoll,就是epoll,开启epoll调度,在linux中开启epoll,会大大增加调度的效率.
  • +P Number erlang节点系统的最大并发进程数,默认为262144, 一般选择2的倍数.
  • +pc [latin1 | unicode]: 设置erts的字符集,会影响shell,io:format的输出.
  • +Q number: 最大端口数
  • +sub [true | false]:
    开启CPU负载均衡,false的时候是采用的CPU密集调度策略,优先在某个CPU线程上运行任务,直到该CPU负载较高为止。
  • +spp [true|false]:
    开启并行port并行调度队列,当开启后会大大增加系统吞吐量,如果关闭,则会牺牲吞吐量换取更低的延迟。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值