Erlang本身对进程数,原子长度等没有限制,但为了提高性能和节省内存,总会在实际实现中和运行环境中作出一些限制。

1、进程数量

缺省情况下同时存在的最大Erlang进程数量不超过2^18=262144个,最大值为2^27-1=134217727,是由于内存的限制在32位环境中这个数量不太可能达到。有效范围是1024-134217727。

怎么知道实际中使用进程限制?

[plain] view plaincopy

 
  1. C:\>erl
  2. Eshell V5.10.2  (abort with ^G)
  3. 1> erlang:system_info(process_limit).
  4. 262144

通过配置erlang启动参数(标志+P)可以改变进程数量限制

[plain] view plaincopy

 
  1. C:\>erl +P 1000000
  2. Eshell V5.10.2  (abort with ^G)
  3. 1> erlang:system_info(process_limit).
  4. 1048576

注意了,erlang实际使用的进程数量限制可能比你设置的要大得多,这是因为erlang运行系统选择的进程数量限制通常是2的幂。

2、分布式节点数量

节点名称限制:

一个节点的远程节点的最大数目是由可用于节点名称atom的最大数目的限制,换句话说,节点名称限制数量取决于atom的最大数量。另外,节点名称长度也和atom有关,不能超过255个字符。

节点连接限制:

能够同时连接的最大节点数是由节点名称限制,可用端口限制,或者可用socket限制共同决定。

3、atom的最大数量

设置erlang系统最大能够处理的原子(atom)数量,默认是1024*1024 (即1048576)

通过配置erlang启动参数(标志+t)可以改变进程数量限制

[plain] view plaincopy

 
  1. C:\>erl +t 1024
  2. Eshell V5.10.2  (abort with ^G)

4、一个atom的字符个数限制

一个atom最多能有255个字符

5、ets表的数量限制

默认值是1400,可以通过环境变量ERL_MAX_ETS_TABLES修改,或者配置erlang启动参数(标志+e)

[plain] view plaincopy

 
  1. C:\>erl +e 2000
  2. Eshell V5.10.2  (abort with ^G)  [plain] view plaincopy

6、一个tuple中最大元素数量

2^26=67108863个,事实上,由于可用内存的限制一般很难达到这个数量

7、二进制数据(binary)的大小限制

32位机器上最大不超过 2^29-1 = 536870911 个字节

64位机器上最大不超过 2^61-1 = 2305843009213693951 个字节

如果超出限制,erlang位语法(bit syntax)将无法工作,直接抛出 system_limit 异常。

8、一个Erlang节点最大分配的数据空间大小

Erlang运行时系统可以使用到32(或64)位地址空间,事实上,操作系统对单个进程的使用空间做了限制。

9、同时打开的端口数量限制(Open ports)

erlang对同时打开的端口数量做出了限制。默认是65536,Windows下是8096。有效值范围是1024-134217727。

[plain] view plaincopy

 
  1. C:\>erl
  2. Eshell V5.10.2  (abort with ^G)
  3. 1> erlang:system_info(port_limit).
  4. 8192

可以通过环境变量ERL_MAX_PORTS修改,或者配置erlang启动参数(标志+Q)修改

[plain] view plaincopy

 
  1. C:\>erl +Q 10000
  2. Eshell V5.10.2  (abort with ^G)
  3. 1> erlang:system_info(port_limit).
  4. 16384

注意了,erlang实际使用的端口数量限制可能比你设置的要大得多,这是因为erlang运行系统选择的端口数量限制通常是2的幂。

10、同时打开的文件和socket数量限制

能同时打开的最大文件和socket数量取决于最大能打开的端口数量,以及操作系统的设定和限制

11、函数的参数个数限制(包括匿名函数)

255

12、dets表存储限制

单个dets文件大小不能超过2G,在64位的系统也有此限制,mnesia也受到这个限制

参考

http://blog.csdn.net/mycwq/article/details/17474211

http://www.erlang.org/doc/efficiency_guide/advanced.html#id69282
http://www.erlang.org/doc/man/erl.html#id162456

Erlang的系统限制的更多相关文章

  1. [Erlang]各种系统限制总结

    Erlang本身对进程数,原子长度等没有限制,但为了提高性能和节省内存,总会在实际实现中和运行环境中作出一些限制. 1.进程数量 缺省情况下同时存在的最大Erlang进程数量不超过2^18=26214 ...

  2. [Erlang 0126] 我们读过的Erlang论文

    我在Erlang Resources 豆瓣小站上发起了一个征集活动 [链接] ,"[征集] 我们读过的Erlang论文",希望大家来参加.发起这样一个活动的目的是因为Erlang相 ...

  3. Erlang 104 OTP

    笔记系列 Erlang环境和顺序编程Erlang并发编程Erlang分布式编程YawsErlang/OTP 日期              变更说明 2014-12-21 A Outline, 1 A ...

  4. Erlang 内存泄漏分析

    随着项目越来越依赖Erlang,碰到的问题也随之增加.前段时间线上系统碰到内存高消耗问题,记录一下troubleshooting的分析过程.线上系统用的是Erlang R16B02版本. 问题描述 有 ...

  5. Erlang generic standard behaviours -- gen_server module

    在分析完gen module (http://www.cnblogs.com/--00/p/4271386.html)之后,就可以开始进入gen_server 的主体module 了.gen_serv ...

  6. Erlang虚拟机的启动

    Erlang虚拟机的启动 erl实际上是一个shell脚本,设置几个环境变量之后,调用执行erlexec.erlexec的入口点在 otp_src_R15B01/erts/etc/common/erl ...

  7. Erlang游戏服设计总结

    这主要是一年多来,个人从事Erlang游戏服开发中对一些事情的思考. 想到哪说到哪,没有条理可言. 欢迎讨论. 通常Erlang游戏服务的设计涉及到的东东包括如下: 任务系统 活动系统 公会系统 玩法 ...

  8. Erlang的调度原理(译文)

    原文 http://jlouisramblings.blogspot.com/2013/01/how-erlang-does-scheduling.html 免爬墙链接 http://www.diku ...

  9. erl_0021 erlang和java的内存模型比较(引用)

    原文  http://deepinmind.iteye.com/blog/2030390 我读到一篇相当相当有趣的关于Erlang VM内存管理策略的文章.它是Jesper Wilhelmsson写的 ...

随机推荐

  1. repeater做成gridview【更新删除编辑等】

    原文发布时间为:2009-06-14 -- 来源于本人的百度文章 [由搬家工具导入] 不多说,不会说。。看我做的范例。。。 http://download.csdn.net/source/138556 ...

  2. O(∩_∩)O哈哈~

    原文发布时间为:2009-04-30 -- 来源于本人的百度文章 [由搬家工具导入]

  3. IIC知识

    任何一个微处理器都要与一定数量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路与CPU直接连接,那么连线将会错综复杂,甚至难以实现.为了简化硬件电路设计.简化系统结构,常用一组线路 ...

  4. Scala不使用null 而使用Option,None,Some的好处

    刚接触Scala时就很奇怪, 为什么Java已经有null了,却偏偏还要弄出个None 后来依然我行我素在Scala里使用null, 结果就是经常被NullPointerException折磨得阴魂不 ...

  5. ie8实现无刷新文件上传

    ie8由于无法使用FormData,想要无刷新上传文件就显得比较麻烦.这里推荐使用jQuery-File-Upload插件,它能够很方便的解决ie8无刷新文件上传问题.(最低兼容到ie6) jQuer ...

  6. UVA - 294 Divisors【数论/区间内约数最多的数的约数个数】

    Mathematicians love all sorts of odd properties of numbers. For instance, they consider to be an int ...

  7. Synchronized 实现原理

    记得刚刚开始学习Java的时候,一遇到多线程情况就是synchronized.对于当时的我们来说,synchronized是如此的神奇且强大.我们赋予它一个名字"同步",也成为我们 ...

  8. Tmux常用快捷键及命令

    Exported from workflowy! tmux session start/create session- tmux- tmux new-session -s portage listin ...

  9. SecureCRT使用Ctrl+D快速关闭Tab

  10. XCODE 4.5 IOS多语言设置 及NSLocalizedString和NSLocalizedStringFromTable的用法。

    前 些天升级到Xcode4.5,现在正在用Xcode4.5+IOS6开发项目,当使用国际化时,遇到了一点问题,之前版本Xcode上新建 Localizable.strings后,添加语言的“+”号不见 ...