[Erlang]各种系统限制总结
Erlang本身对进程数,原子长度等没有限制,但为了提高性能和节省内存,总会在实际实现中和运行环境中作出一些限制。
1、进程数量
缺省情况下同时存在的最大Erlang进程数量不超过2^18=262144个,最大值为2^27-1=134217727,是由于内存的限制在32位环境中这个数量不太可能达到。有效范围是1024-134217727。
怎么知道实际中使用进程限制?
- C:\>erl
- Eshell V5.10.2 (abort with ^G)
- 1> erlang:system_info(process_limit).
- 262144
通过配置erlang启动参数(标志+P)可以改变进程数量限制
- C:\>erl +P 1000000
- Eshell V5.10.2 (abort with ^G)
- 1> erlang:system_info(process_limit).
- 1048576
注意了,erlang实际使用的进程数量限制可能比你设置的要大得多,这是因为erlang运行系统选择的进程数量限制通常是2的幂。
2、分布式节点数量
节点名称限制:
一个节点的远程节点的最大数目是由可用于节点名称atom的最大数目的限制,换句话说,节点名称限制数量取决于atom的最大数量。另外,节点名称长度也和atom有关,不能超过255个字符。
节点连接限制:
能够同时连接的最大节点数是由节点名称限制,可用端口限制,或者可用socket限制共同决定。
3、atom的最大数量
设置erlang系统最大能够处理的原子(atom)数量,默认是1048576
通过配置erlang启动参数(标志+t)可以改变进程数量限制
- C:\>erl +t 1024
- Eshell V5.10.2 (abort with ^G)
4、一个atom的字符个数限制
一个atom最多能有255个字符
5、ets表的数量限制
默认值是1400,可以通过环境变量ERL_MAX_ETS_TABLES修改,或者配置erlang启动参数(标志+e)
- C:\>erl +e 2000
- Eshell V5.10.2 (abort with ^G)
- /******** 无情的分割线 ********* /
- 作者:没有开花的树
- 博客:blog.csdn.net/mycwq
- / ******* 无情的copy *********/
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。
- C:\>erl
- Eshell V5.10.2 (abort with ^G)
- 1> erlang:system_info(port_limit).
- 8192
可以通过环境变量ERL_MAX_PORTS修改,或者配置erlang启动参数(标志+Q)修改
- C:\>erl +Q 10000
- Eshell V5.10.2 (abort with ^G)
- 1> erlang:system_info(port_limit).
- 16384
注意了,erlang实际使用的端口数量限制可能比你设置的要大得多,这是因为erlang运行系统选择的端口数量限制通常是2的幂。
10、同时打开的文件和socket数量限制
能同时打开的最大文件和socket数量取决于最大能打开的端口数量,以及操作系统的设定和限制
11、函数的参数个数限制(包括匿名函数)
255
12、dets表存储限制
单个dets文件大小不能超过2G,在64位的系统也有此限制,mnesia也受到这个限制
[Erlang]各种系统限制总结的更多相关文章
- Erlang的系统限制
Erlang本身对进程数,原子长度等没有限制,但为了提高性能和节省内存,总会在实际实现中和运行环境中作出一些限制. 1.进程数量 缺省情况下同时存在的最大Erlang进程数量不超过2^18=26214 ...
- [Erlang 0126] 我们读过的Erlang论文
我在Erlang Resources 豆瓣小站上发起了一个征集活动 [链接] ,"[征集] 我们读过的Erlang论文",希望大家来参加.发起这样一个活动的目的是因为Erlang相 ...
- Erlang 104 OTP
笔记系列 Erlang环境和顺序编程Erlang并发编程Erlang分布式编程YawsErlang/OTP 日期 变更说明 2014-12-21 A Outline, 1 A ...
- Erlang 内存泄漏分析
随着项目越来越依赖Erlang,碰到的问题也随之增加.前段时间线上系统碰到内存高消耗问题,记录一下troubleshooting的分析过程.线上系统用的是Erlang R16B02版本. 问题描述 有 ...
- Erlang generic standard behaviours -- gen_server module
在分析完gen module (http://www.cnblogs.com/--00/p/4271386.html)之后,就可以开始进入gen_server 的主体module 了.gen_serv ...
- Erlang虚拟机的启动
Erlang虚拟机的启动 erl实际上是一个shell脚本,设置几个环境变量之后,调用执行erlexec.erlexec的入口点在 otp_src_R15B01/erts/etc/common/erl ...
- Erlang游戏服设计总结
这主要是一年多来,个人从事Erlang游戏服开发中对一些事情的思考. 想到哪说到哪,没有条理可言. 欢迎讨论. 通常Erlang游戏服务的设计涉及到的东东包括如下: 任务系统 活动系统 公会系统 玩法 ...
- Erlang的调度原理(译文)
原文 http://jlouisramblings.blogspot.com/2013/01/how-erlang-does-scheduling.html 免爬墙链接 http://www.diku ...
- erl_0021 erlang和java的内存模型比较(引用)
原文 http://deepinmind.iteye.com/blog/2030390 我读到一篇相当相当有趣的关于Erlang VM内存管理策略的文章.它是Jesper Wilhelmsson写的 ...
随机推荐
- [Objective-C语言教程]数字(13)
在Objective-C编程语言中,要以对象形式保存基本数据类型,如:int,float,bool.Objective-C提供了一系列与NSNumber一起使用的方法,一些常用重要的方法列在下表中. ...
- [Swift]Swift的常用内置函数
内置函数:在Swift中不需要导入任何模块(如UIKit等)或者引用任何类就可以使用的函数.Swift预先定义的函数//快捷键Control+⌘+Space来开启Emoji字符输入 1.断言asser ...
- jar -- java文档归档工具
参考文档 http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/jar.html http://blog.chinaunix.net ...
- 缩点 CF893C Rumor
CF893C Rumor 有n个人,其中有m对朋友,现在你有一个秘密你想告诉所有人,第i个人愿意出价a[i]买你的秘密,获得秘密的人会免费告诉它的所有朋友(他朋友的朋友也会免费知道),现在他们想出最少 ...
- AlvinZH掉坑系列讲解(背包DP大作战H~M)
本文由AlvinZH所写,欢迎学习引用,如有错误或更优化方法,欢迎讨论,联系方式QQ:1329284394. 前言 动态规划(Dynamic Programming),是一个神奇的东西.DP只能意会, ...
- QRCode简介(收藏)
一.什么是二维码:二维码 (2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的. 在许多种类的二维条码中,常 ...
- 高阶篇:4.2.2)DFMEA层级分明的失效模式、失效后果、失效原因
本章目的:明确失效模式.失效后果.失效原因的定义,分清楚层次关系,完成DFMEA这部分的填写. 1.失效模式,失效后果,失效原因的定义: 这是FEMEA手册第四册中的定义. 1.1 潜在失效模式 (b ...
- KB4284826 远程桌面发生身份验证错误,要求的函数不受支持
win -r -> run -> gpedit.msc 链接:https://www.zhangfangzhou.cn/authentication-error.html远程桌面发生 ...
- CDH集群安装配置(四)- mysql 的安装
安装mysql,并且创建相关的表(只需要在chd1上面安装而且需要root权限)1.1 查看Centos自带mysql是否已经安装 yum list installed | grep mysql 卸载 ...
- db2 monitor event
1.创建事件监控器至少需要哪些权限? DBADM authority SQLADM authority 2.事件监控器的种类有哪些? 3. db2 flush event monitor eventm ...