ITKeyword,专注技术干货聚合推荐

注册 | 登录

[Erlang]VM启动参数研究

abv123456789 分享于 2015-06-03

2020腾讯云8月秒杀活动,优惠非常大!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1040

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

原文见于%erlang安装目录%/erts-版本号/doc/html/erl.html,选择了一些自己用过的,或者觉得重要常用的参数记录一下,备查。

 

erlang启动参数有3种:emulator flagsflags 和plain arguments。

emulator flags 是以“+”开头的,用来控制模拟器的行为,附送一个非常实用的例子:

 

[plain]  view plain copy
  1. C:\>erl +V  
  2. Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 5.8.2  

flags 是以“-”开头的, 是erlang运行时系统的参数,可以用init:get_argument/1获得。

plain arguments 普通参数,在第一个flag参数前,或在-- flag之后,-extra后的参数都是普通参数。

[plain]  view plain copy
  1.   

erl +W w -sname arnie +R 9 -s my_init -extra +bertie

 

[plain]  view plain copy
  1. % erl +W w -sname arnie +R 9 -s my_init -extra +bertie  
  2. (arnie@host)1> init:get_argument(sname).  
  3. {ok,[["arnie"]]}  
  4. (arnie@host)2> init:get_plain_arguments().  
  5. ["+bertie"]  

Here +W w and +R 9 are emulator flags. -s my_init is an init flag, interpreted by init. -sname arnie is a user flag, stored by init. It is read by Kernel and will cause the Erlang runtime system to become distributed. Finally, everything after -extra (that is, +bertie) is considered as plain arguments.

 

Flags

 

-Application Par Val 把应用中的Par参数设置为值Val;

-args_file FileName 从文件FileName读取命令行参数;

-boot File  指定启动使用的boot文件,默认是 $ROOT/bin/start.boot,在这个目录下还有start_clean.boot,start_sasl.boot。如果需要sasl的话,就“-boot start_sasl ”;
-boot_var Var Dir 代替$ROOT用的;

 

-code_path_cache 不常用;

 

-compile Mod1 Mod2 ...  不推荐使用了,应该使用erlc;
-config Config 指定配置文件,这个是很有用的,比如在Programming Erlang里,就用到 erl -boot start_sasl -config elog3,其中文件全名是elog3.config,内容如下:
[plain]  view plain copy
  1. %% rotating log and minimal tty  
  2. [{sasl,[  
  3.   {sasl_error_logger,false},  
  4.   %%define the parameters of the rotating log  
  5.   %%the log file directory  
  6.   {error_logger_mf_dir,"D:/erlang/otpexample/error_logs"},  
  7.   %% # bytes per log file  
  8.   {error_logger_mf_maxbytes,10485760}, %10 MB  
  9.   %%maximum number of logfiles  
  10.   {error_logger_mf_maxfiles,10}  
  11.   ]}].  


配置的含义,请参考相关书籍;

-connect_all false  貌似不常用;

-cookie Cookie 被-setcookie代替了;

-detached 脱离console,跑后台erlang进程用的,看做"nohup **** &";

-emu_args debug用的,打印出实际传给模拟器的值;

-env Variable Value 设置操作系统环境变量用的,比如:

[plain]  view plain copy
  1. erl -env DISPLAY gin:0  


-eval Expr(init flag)  表达式做启动参数,比如(下列代码在本机执行出错,以后再研究):

[plain]  view plain copy
  1. % erl -eval '{X,Y,Z}' = now(), random:seed(X,Y,Z).'  
-extra(init flag)  后面跟的都是普通参数;
  -heart 启动心跳监控器;
-hidden 设置为隐藏节点,该节点会连接集群的所有节点,但是在其他节点执行node/0,不会列出它;
-hosts Hosts erlang运行在那些服务器的IP地址;

 

-id Id 给erlang进程设置一个id,一般和 -sname 和  -name一起用;

 

-init_debug 在启动/初始化erlang进程时,打印debug信息;
-instr
-loader Loader 为 erl_prim_loader指定装载模块的方法,相当于java里指定classloader;
-make
-man Module
-mode interactive | embedded
-name Name 给一个erlang节点/进程设置一个名称
-noinput
-noshell
-nostick

 

-pa Dir1 Dir2 ...
-pz Dir1 Dir2 ...
-remsh Node 远程启动一个erlang节点,比如(当然RSA神马的,要先搞定):
[plain]  view plain copy
  1. erl -sname node1 -remsh node2@machine2.example.com   
 
-rsh Program 远程启动一个slave erlang节点, 这里有一个例子;
-run Mod [Func [Arg1, Arg2, ...]]
-s Mod [Func [Arg1, Arg2, ...]]
-setcookie Cookie 给节点设置cookie,比如:
[plain]  view plain copy
  1. erl -setcookie SFEWRG34AFDSGAFG35235 -name nodex  

并且它是运行时可以改的:

[plain]  view plain copy
  1. erlang:set_cookie(node(), 'SFEWRG34AFDSGAFG35235').  


-shutdown_time Time 关闭节点需要的时间,如果超过,就直接kill,默认是infinity

-sname Name 给节点设置名字,和-name类似,不过它的结果是: Name@Host ;
-smp [enable|auto|disable] 是否需要支持smp,默认应该是enable的,smp的好处见这里
-version(emulator flag)
 

Emulator Flags

+a size 一般实用默认值就可以了。

Suggested stack size, in kilowords, for threads in the async-thread pool. Valid range is 16-8192 kilowords. The default suggested stack size is 16 kilowords, i.e, 64 kilobyte on 32-bit architectures. This small default size has been chosen since the amount of async-threads might be quite large. The default size is enough for drivers delivered with Erlang/OTP, but might not be sufficiently large for other dynamically linked in drivers that use the driver_async() functionality. Note that the value passed is only a suggestion, and it might even be ignored on some platforms.

+A size 一步线程池的大小,默认是0;比如执行werl +A 1,会看到:

[plain]  view plain copy
  1. Erlang R14B01 (erts-5.8.2) [smp:2:2] [rq:2] [async-threads:1]  
  2.   
  3. Eshell V5.8.2  (abort with ^G)  


+B [c | d | i]

+c

+d 默认情况下erlang进程遇到内部错误,比如oom,会产生一个crash dump和core dump,+d让节点只产生后者;

+e Number ETS表的最大数量;
+ec强制ETS表启动压缩,一般不用的;
+fnl 如果文件名使用了ISO-latin-1编码;
+fnu如果文件名使用了UTF-8 编码;

 

+fna 和当前操作系统一致;
+hms Size 指定erlang进程的默认(最小?)堆内存大小(这个应该不用太担心);
+hmbs Size 进程默认二进制虚拟内存堆大小;
+K true | false 是否开启kernel poll,就是epoll;
+l
+MFlag Value

+P Number erlang节点系统的最大并发进程数;

+R ReleaseNumber

+r

+rg ReaderGroupsLimit  Limits the amount of reader groups used by read/write locks optimized for read operations in the Erlang runtime system. By default the reader groups limit equals 8.

+S Schedulers:SchedulerOnline
+sFlag Value
 

+t size 

+T Level

+V 模拟器版本号

+v verbose

+W w | i

+zFlag Value

Environment variables

ERL_CRASH_DUMP 

ERL_CRASH_DUMP_NICE

ERL_CRASH_DUMP_SECONDS 

 ERL_AFLAGS

ERL_ZFLAGS 和 ERL_FLAGS

ERL_LIBS

ERL_EPMD_PORT

(待续ing)

原文见于%erlang安装目录%/erts-版本号/doc/html/erl.html,选择了一些自己用过的,或者觉得重要常用的参数记录一下,备查。   erlang启动参数有3种:emulator flags, flags 和plain arguments

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。