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也受到这个限制
参考
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开发者的理想伙伴,它集成了许多实用的功能,提高了Erlang开发的便捷性和效率。同时,它的开源性质也促进了社区的交流和创新,为Erlang生态系统的繁荣做出了贡献。如果你是Erlang的爱好者...
总结,尽管Windows XP系统已经过时,但通过选择合适的Erlang和RabbitMQ版本,以及正确配置和管理,依然可以在这种环境下运行这些工具。然而,强烈建议升级到更新的操作系统以获得更好的安全性和性能。
总结,这个名为“erlang-rabbitmq配套安装.zip”的压缩包可能包含了安装 Erlang 和 RabbitMQ 的脚本或指南,帮助用户快速在 Linux 系统上部署这套消息队列系统。通过理解上述步骤,你将能够独立完成安装过程,并开始...
### Erlang运行时系统应用(ERTS):匹配规格与API概述 #### 一、Erlang运行时系统应用(ERTS) Erlang运行时系统应用(ERTS)是Erlang语言的核心组成部分之一,它负责管理和执行Erlang程序。ERTS包括了进程调度、...
总结,Ecache是Python开发者在处理大量数据时的一个强大工具,通过结合Erlang NIF、LevelDB和protobuf的优势,实现了轻量级、高效的本地磁盘缓存解决方案。其无容量限制的设计和丰富的功能使其在各种数据密集型应用...
总结来说,`os:cmd/1`适合执行简单命令并获取标准输出,而`erlang:open_port/2`则适用于更复杂的场景,如需要错误信息、退出状态码或者控制进程交互。选择哪种方法取决于你的具体需求和对性能的影响。
在分布式系统设计中,消息传递是关键组成部分,特别是在Erlang和Elixir这样的并发和分布式编程语言中。本文将深入探讨“歧管”(Manifold)这一概念,它旨在优化Erlang和Elixir节点之间的批量消息传递,提高性能。 ...
首先,安装RabbitMQ前,确保您的Linux系统是基于Erlang语言运行的,因为RabbitMQ就是用Erlang编写的。Erlang是一种并发和分布式系统设计的语言,具有内置的错误恢复和容错机制,非常适合构建像消息队列这样的高可用...
在本压缩包“RabbitMQ.tar.gz”中,包含了在CentOS 7操作系统上安装和运行RabbitMQ所需的全部组件,包括Erlang环境,这是RabbitMQ的基础,因为RabbitMQ是用Erlang编程语言编写的。 1. Erlang:Erlang是一种并发、...
总结来说,这个压缩包提供了一套完整的RabbitMQ服务器安装解决方案,包括必要的Erlang运行环境和 socat 工具,适用于CentOS 7系统。用户可以根据提供的RPM包进行安装,实现一个功能完备的消息队列服务。
这个监督者进程是整个客户端子系统的基石,当任何子进程出现问题时,它会根据Erlang的分布式计算模型进行故障恢复。 接着,`rabbit_connection_sup`是一个监督进程,负责创建和维护`rabbit_connection`进程。`...
### 《架构师》12月份期刊核心知识点总结 #### 一、资源限制与开发挑战 **背景**:本文从Matrix电影中的一句经典台词“Time is always against us”(时间总是不够用)出发,讨论了软件开发过程中普遍存在的资源...
2. **安装Erlang**: 解压Erlang OTP包,然后将其安装到系统的适当位置。 3. **安装RabbitMQ**: 将RabbitMQ Server二进制包解压,并复制到Erlang的lib目录下,以使RabbitMQ能够找到其依赖。 4. **配置RabbitMQ**: ...
总结,RabbitMQ是一个强大且灵活的消息中间件,其安装过程相对简单,但理解其核心概念和应用场景是实现高效系统的关键。通过熟练掌握RabbitMQ,开发者可以在分布式系统中构建出更加稳定、可靠的通信架构。
1. 安装Erlang:RabbitMQ依赖Erlang环境,首先确保你的系统上已安装Erlang。 2. 下载RabbitMQ:访问官方网站下载适合你操作系统的RabbitMQ服务器软件包。 3. 安装RabbitMQ:按照官方文档的指示进行安装。 4. 启动...
总结来说,通信网理论基础期中测试涵盖了概率统计基础、随机过程(泊松过程)、排队论(Erlang B公式)和网络性能分析(时延计算)等核心知识点。理解和应用这些概念是理解和优化通信网络的关键,它们在实际的网络...
总结来说,RabbitMQ 的安装与 MQTT 功能的开启涉及下载和安装 Erlang OTP 以及 RabbitMQ 服务器,启用 MQTT 插件,配置参数,最后验证 MQTT 连接。这是一项关键的操作,使得 RabbitMQ 能够支持物联网设备和其他 MQTT...
RabbitMQ是一个基于AMQP(Advanced Message Queuing Protocol)的开源消息代理软件,它使用Erlang编程语言来编写,并且构建在 OTP(Open Telecom Platform)框架之上,提供了高可用性和稳定性。RabbitMQ的核心功能是...
总结,ARM架构上的RabbitMQ部署和应用涉及了操作系统环境的准备、中间件的安装配置、消息队列的管理和应用等多个层面。理解这些知识点对于构建高效、稳定的分布式系统至关重要。通过不断实践和优化,我们可以在ARM...
2. **修改系统限制**:通过`ulimit -n 20480`增加文件描述符的数量,确保Tsung可以建立足够多的连接。 3. **编写测试脚本**:创建一个XML配置文件,定义测试的具体参数。 4. **执行测试**:启动Tsung服务,观察系统...