您的位置:首页 > 理论基础 > 计算机网络

erlang程序启动初期,erlang进程突然猛增分析

2012-04-19 13:35 295 查看
现象:在erlang程序启动后,只要接受一个外部erlang程序通过gen_server:call或者其他的访问,就会出现许多无名的erlang进程。

分析:刚开始以为是什么地方出了问题,在本地测试的时候根本没有出现过如此的现象,查看这些无名的erlang进程发现每一个都有一个port,然后通过nodes()函数发现,erlang程序和很多模块都建立了链接,erlang程序启动的时候默认是transitive全连通的,即当节点A连接了节点B,节点B连接了节点C,那么节点A也与节点C互相连接,这样就组成了全连通网络。

以下是转载:

但有时我们希望连接一个节点而不去连接其他节点(比如某个节点只是用来查看集群的一些信息),这时可以通过指定该节点为hidden节点来实现(在节点启动时指定-hidden参数),hidden节点不加入集群全连通网络。hidden节点还能降低TCP/IP的连接数:因为如果一个集群里的节点数是N,则全连通的话,需要的TCP/IP连接数则为:N * (N - 1) / 2,所以将没必要全连通的节点设为hidden节点,会将该节点从全连通网络中移除,从而降低TCP/IP连接数。 

注意nodes() 默认是不返回hidden节点的,指定参数hidden或connected(即node(hidden)或node(connected))可返回hidden节点的信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息