解决erlang节点启动失败报"inet_tcp",econnrefused的问题

今天有同事说他机器上的leofs启动不了。我用console起了一下,发现报如下错:

{error_logger,{{2015,11,3},{6,23,6}},"Protocol: ~tp: register/listen error: ~tp~n",["inet_tcp",econnrefused]}
{error_logger,{{2015,11,3},{6,23,6}},crash_report,[[{initial_call,{net_kernel,init,['Argument__1']}},{pid,<0.601.0>},{registered_name,[]},{error_info,{exit,{error,badarg},[{gen_server,init_it,6,[{file,"gen_server.erl"},{line,322}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,237}]}]}},{ancestors,[net_sup,kernel_sup,<0.591.0>]},{messages,[]},{links,[#Port<0.1236>,<0.598.0>]},{dictionary,[{longnames,true}]},{trap_exit,true},{status,running},{heap_size,610},{stack_size,27},{reductions,774}],[]]}
{error_logger,{{2015,11,3},{6,23,6}},supervisor_report,[{supervisor,{local,net_sup}},{errorContext,start_error},{reason,{'EXIT',nodistribution}},{offender,[{pid,undefined},{name,net_kernel},{mfargs,{net_kernel,start_link,[[,longnames]]}},{restart_type,permanent},{shutdown,2},{child_type,worker}]}]}
{error_logger,{{2015,11,3},{6,23,6}},supervisor_report,[{supervisor,{local,kernel_sup}},{errorContext,start_error},{reason,{shutdown,{failed_to_start_child,net_kernel,{'EXIT',nodistribution}}}},{offender,[{pid,undefined},{name,net_sup},{mfargs,{erl_distribution,start_link,[]}},{restart_type,permanent},{shutdown,infinity},{child_type,supervisor}]}]}
...
怀疑是EPMD有问题。尝试erl,可以正常启动;尝试erl -name ,报类似的错误。

尝试epmd -debug,得到如下信息:

epmd: Tue Nov 3 09:00:04 2015: epmd running - daemon = 0
epmd: Tue Nov 3 09:00:04 2015: there is already a epmd running at port 4369
尝试ps axu grep epmd,没有发现进程:

root 16308 0.0 0.0 112640 976 pts/6 S+ 09:00 0:00 grep --color=auto epmd
尝试lsof -i:4369,发现如下进程占用了4369端口:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
docker 25840 root 4u IPv4 80940 0t0 TCP registry.xxxxxx.com:epmd (LISTEN)
杀掉该进程后,恢复正常。确定了问题是EPMD的默认端口号被其它进程占用导致。解决方案:可以在启动EPMD时指定其端口号,也可以设置环境变量ERL_EPMD_PORT来指定其端口号。但是这样治标不治本,合理的做法还是规划好服务器上要启动的服务及其需要使用的端口号,避免冲突。

关于EPMD的介绍和使用,可以看这里: http://www.erlang.org/doc/man/epmd.html

更多相关文章
  • 开源监控利器nagios实战 作者:田逸([email protected]) from: http://net.it168.com/a2009/0309/267/000000267878.shtml 俗话说:工欲善其事,必先利其器.要做好系统管理,使自己的工作更轻松更有效的话,一个好的监控工具是必不可少的了 ...
  • 现在个人隐私和个人信息的保护越来越受到人们的关注,我们也越来越留心防止个人信息和隐私的泄露.但是在如今这个网络越来越便捷的时代,我们在享受到方便服务的同时,也承担着越来越严重的风险,甚至是一个邮箱也可以出卖你的真实身份给犯罪份子有机可乘. 用搜索引擎通过邮箱检索个人信息或者通过某些不正规公司购买个人 ...
  • [python]  int(x [,base ])         将x转换为一个整数     long(x [,base ])        将x转换为一个长整数     float(x )               将x转换到一个浮点数     complex(real [,imag ])   ...
  • javascript有两种定显示器, setTimeout和setInterval,下面简要介绍两个函数然后附上简单的例子. setTimeout(function, time) , 当定位到time间隔则执行function函数,执行一次就不再执行 clearTimeout(t), 结束setTi ...
  •  通过微信盗取银行存款早已不是个例,窃贼是如何绕过支付密码利用微信支付平台转走银行钱款?受害者曾经一度忽略的提醒和出现的异常又代表窃贼如何行窃?让我们看看近日水木社区出现的一则热贴:关于一个博士生"微信钱财被盗连载". 绕过支付密码盗取微信存款 受害者在微信上绑定了银行卡(余额2 ...
  • Java入门 如果你才刚开始接触Java世界,那么要做的第一件事情是,安装JDK——Java Development Kit(Java开发工具包),它自带有Java Runtime Environment(JRE)和JVM(Java运行时环境).它能让你在自己的电脑上编译.运行.测试你的Java程序 ...
一周排行
  • 文/大猫前几天在一个电梯广告上看到了一款手机的广告,全片基本就是手机功能的一个展示,几乎没有其他任何内容.心里默默的感叹原来手机广告已经拍成这样了.但是仔细想想,广告拍成这样似乎有其合理性.看过王自如的一个评测视频之 ...
  • 我相信,所有程序员都需要在下面两点之间找到一个良好的平衡: 1.把自己关在一间私密的办公室里,针对你的程序与编译器展开一次亲密对话. 2.出入公众场合,与其他人公开谈论你的程序. 关于这个话题,我已经谈过几次了,在此 ...
  • 很多情况下,我们的资料都是保存成TXT格式的.如果打算更改一段已经被多个文件重复引用过的文字时就需要在每个文件中重复进行"打开查找替换保存"的操作.但由于文件一般都被分别保存在不同的文件夹中,整个 ...
  • 一.init.rc语法规则 1.init.rc文件的内容主要分类 动作(Action) 命令(Commands) 服务(Services) 选项(Options) 触发(trigger) 2.动作和命令一起使用 on ...
  • [部分引用别人的文档修改而成,实际经过安装验证的文档] Oracle Rac 11GR2(11.2.0.4) For AIX6.1+ASM安装手册 部分截图采用了网上别人的图片以及部分章节 2 安装环境说明  节点 ...
  • 为了给用户带来更加卓越的应用体验,斐讯通信于近日对SOHO宽带路由器系列中的FR504进行了版本升级.据悉,最新的FR504正式版本(10.9版)已经发布,新版本对快速配置向导以及广域网设置进行了优化,对部分菜单也进 ...
  • 1. snapshot 概念    当要做snapshot时,可以通过qemu的monitor terminal 或是QMP(Qemu Monitor Protocol)向QEMU发送命令,命令执行的结果是将原始的镜 ...
  • 最近项目赶的紧,歇了一个星期没写博客了,趁周末继续写这个系列.        先前我们讲的都是"线性结构",他的特征就是"一个节点最多有一个"前驱"和一个" ...
  •         想来只要是学习Java软件编程的都或多或少知道些它们之间的区别,今天偷闲总结一下:         String:固定长度的字符串,如果值发生了变化则必须重新生成新的String实例:         ...
  • 小杜是在北京国贸写字楼上班的一个80后白领,下班前她通过"滴滴打车"叫了一辆"快车"接她回家."地铁下班时人太多,有时候一两趟都挤不上去,我基本不坐地铁." ...