参考资料:
http://www.cnerlang.com/erts-8.1/doc/html/erl.html
https://blog.csdn.net/erlib/article/details/50248939
part1: 介绍
erlang启动参数分为3种:
- 以 + 开头的为emulator flag,用于控制erl模拟器(交互界面)的行为.
- 以 - 开头的为flag, 主要是传给erl运行时系统,例如传给init/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并行调度队列,当开启后会大大增加系统吞吐量,如果关闭,则会牺牲吞吐量换取更低的延迟。