erlang 创建进程参数

原创
2019/04/25 17:30
阅读数 1K

erlang优势在于线程消息传递及网络层处理,业务逻辑比较弱。

1.-pa

例子: -pa ebin 
解释:指定执行文件(.beam)目录 

2. +P

+P 100000
控制erlang最多创建的进程数量
erlang:system_info(process_limit).  // 查看系统的进程限制

3.ERL_MAX_ETS_TABLES 或者 +e

ets表的数量限制

4.+K true

标识启用epoll(epoll有边沿式触发类型)

5.-smp enable 启用多核支持

6.-hidden enable(true/false)

作用:在集群中隐藏节点,就可以避免全联通

Note:erlang节点注意一个问题,默认erlang节点是全联通的, 也就是当一个节点加入集群时,集群其他所有节点会和新加入的节点建立联系。全联通带来的问题,集群节点间两两连接,随着节点增加,连接数量呈N*(N-1)/2增长,越发恐怖,连接本身占用了端口资源。更坏的是,为了检测节点的存活,erlang会定期发心跳包检查,即使一分钟一个tick,节点多的话也会造成大量的网络风暴。

    作者:没有开花的树 
    来源:CSDN 
    原文:https://blog.csdn.net/mycwq/article/details/50939354 
    版权声明:本文为博主原创文章,转载请附上博文链接!

7.+spp true/false

开启并行port并行调度队列,当开启后会大大增加系统吞吐量,如果关闭,则会牺牲吞吐量换取更低的延迟。

8.+sub true/false

开启CPU负载均衡,false的时候是采用的CPU密集调度策略,优先在某个CPU线程上运行任务,直到该CPU负载较高为止。

9.+zdbbl 65536

分布式erlang的端口buffer大小,当buffer满的时候,向分布式的远程端口发送消息会阻塞.erlang端口buff大小,buff满时,消息会阻塞,范围是1-2097151,默认是1024,单位是kb。

10.+pc latin1/unicode

这个选项的作用就是选择Shell可打印字符的范围.默认情况下,erl启动参数是latin.

  • Latin:是ISO-8859-1的别名,有些环境下写作Latin-1。ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。
  • Unicode:(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。
  • 实例:erl +pc unicode
1> <<230,136,145,228,187,172,229,173,166,228,185,160>>.
        <<"我们学习"/utf8>>

erl (默认是latin)

1> <<230,136,145,228,187,172,229,173,166,228,185,160>>.
        <<230,136,145,228,187,172,229,173,166,228,185,160>>.

Note: 之前提到过的Erlang Shell中显示文本常量的各种奇怪,其实源于字符串启发式检测机制("Heuristic String Detection"),简单讲就是Erlang Shell会检测List,Binary里面的数据是否可以有可打印的字符,比如下面的二进制串<<230,136,145,228,187,172,229,173,166,228,185,160>>. 就被认为检测到可打印的,就输出了<<"我们学习"/utf8>>.还记得那个输出数据的技巧吗?输出的数据内容被Shell自作聪明的打印成了字符,怎么解决的呢?在数据尾部追加一个0,比如[25105].会打印出来"我",[25105,0]就原样输出了. 这个技巧实际上是通过加0避开了"Heuristic String Detection"机制.

11.export ERL_COMPILER_OPTIONS=bin_opt_info

使用bin_opt_info选项可让编译器打印大量关于二进制优化的信息。

警告如下所示:
./efficiency_guide.erl:60: Warning: NOT OPTIMIZED: sub binary is used or returned
./efficiency_guide.erl:62: Warning: OPTIMIZED: creation of sub binary delayed

12.-s Mod [Func [A1,A2,...]] 开始启动执行的模块game的start_server方法

当系统初始化的时候执行确定的函数,如果不存在Func,则默认是start,也可以使用-run代替

13.-name sd2@127.0.0.1 设置节点名称,-name 设置长名,-sname 设置短名

14.-setcookie sd2

不同nodes之间通信的一个暗号。只有拥有相同暗号的nodes之间才能进行通信。
也可以进入erlang的console之后用erlang:set_cookie(node(), cookie)进行设置,并用erlang:get_cookie()进行查询。

15.-boot start_sasl -config log

**-boot **指定一个引导文件;此种情况表明:默认配置文件下启动SASL,启动指定配置文件log.config
sasl是一个应用,sasl的一个重要功能便是可以记录系统进程相关日志,如进程启动、结束、崩溃错误等信息。sasl的日志功能是基于erlang自带的日志模块error_logger来实现的。

17.-kernel dist_auto_connect never

通常,当其他节点被引用时会自动的建立连接,设置成never的作用是禁止这种行为。
在一些情况下,连接必须使用connect_node() 明确的建立。

18.-extra 127.0.0.1 5566 0

定义一些额外的参数,可以指定如:数据库相关配置等数据

19.-noshell

没有shell框erlang运行系统
Starts an Erlang runtime system with no shell. This flag makes it possible to have the Erlang runtime system as a component in a series of Unix pipes.

20.-detached

启动erlang运行系统与系统命令框隔离。运行在后台进程和守护进程。

21. -remsh node(onhook_dev@127.0.0.1)

设置当前节点如node节点一样执行

获取参数值

  • init:get_argument(smp/hidden...) -->可以获取该参数命令对应的值
  • init:get_plain_arguments(). --> 获取extra参数命令的值

参考网站:

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部