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节点的信息。
分析:刚开始以为是什么地方出了问题,在本地测试的时候根本没有出现过如此的现象,查看这些无名的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节点的信息。
相关文章推荐
- Linux进程启动过程分析do_execve(可执行程序的加载和运行)---Linux进程的管理与调度(十一)
- erlang监控进程在启动进程退出后异常退出原因分析
- Linux进程启动过程分析do_execve(可执行程序的加载和运行)---Linux进程的管理与调度(十一)
- 分析Android 根文件系统启动过程(init守护进程分析)
- 分析Android 根文件系统启动过程(init守护进程分析)
- Chromium的GPU进程启动过程分析
- linux 内核进程监控 针对bash下启动的程序
- Qtcreator编写ros程序:无法启动进程"catkin_make" -DCMAKE_BUILD_TYPE=Debug
- erlang启动过程分析
- windows2003 IIS 服务启动失败,提示‘另一个程序正在使用此文件,进程无法访问',解决方法
- 启动IIS 网站出现错误 另一个程序正在使用此文件,进程无法访问
- Linux操作系统分析-(2)进程的创建与可执行程序的加载
- linux如何根据进程ID查找启动程序的路径
- Android的启动过程分析(从进程和Framework的角度)-android学习之旅(98)
- PPPOE登录程序二(启动进程部分plck)
- erlang性能分析及进程监控工具
- Cocos2d-x之 IOS工程平台程序启动流程分析
- 程序启动进程特别是Win7远程桌面启动进程(备注)
- Chromium的Plugin进程启动过程分析
- Nginx源码分析:3张图看懂启动及进程工作原理