解决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程序 ...
一周排行
  • 去年10月,世界知名互联网公司.共享经济鼻祖Uber开始在广州.深圳.上海.成都.杭州和武汉等六个城市推行了一种比出租车价格更便宜.快捷的搭车方式--人民优步,由此引发了有关Uber在中国的种种争议.从Uber广州. ...
  • 这些天互联网大事不少呀 1.逻辑思维分家(所谓合久必分,分久必合,实属正常,切行切珍惜吧) 2.锤子手机开卖 (不管你买没买,反正我没买,作为多年Android开发的我深知说的亮点其实在我看来都是没用的) 3.京东上 ...
  • 病毒名称:Trojan.DL.Win32.Agent.zjh 病毒样本文件名称:niu.exe 样本文件大小:62976字节   感染过程: 运行病毒样本程序niu.exe,病毒会在所有分区根目录中释放病毒文件niu ...
  • 配置文件下载  http://vdisk.weibo.com/s/DOlfks4wpIj LiveReload安装前的准备工作: 安装Node.js和Grunt,如果第一次接触,可以参考:Windows下安装Grun ...
  • 上周,本报曾报道了谷歌公司和摩托罗拉移动技术达成协议,前者将斥资125亿美元收购摩托罗拉移动技术的消息).这一收购协议在业界产生了巨大影响,记者日前对东莞市场进行了调查,看其是否波及到一线销售层面.渠道:销售无明显变 ...
  •      声明:本文为转载.      当把一台服务器(包括Web服务器.FTP服务器或者流媒体服务器等等)放入网络中之后,随着客户端数量的不断增加,人们往往需要功能更强大.处理速度更快的服务器.为了解决这个问题,如 ...
  • IT技术的迅速发展,信息系统已成为企业业务开展不可或缺的重要组成部分,特别是政府.军队.能源.通信等国家重点行业,信息系统的安全与稳定运行已受到广泛的关注和重视.然而由于我国用户IT建设水平参差不齐,软件兼容.驱动冲 ...
  • 文章讲的非常好,lock 和isolate讲的比较清楚 详细参见:http://www.cnblogs.com/zhenyulu/articles/330494.html#!comments 2.2.2.1 封锁(L ...
  • 4月22日消息,苹果本周将向测试人员发布β测试版Mac OS X 10.6 Snow Leopard操作系统,表明测试进程"提速"了. 据国外媒体报道称,苹果去年6月份发布了Mac OS X 10 ...
  • "#"符号是数目的缩写. 使用示例:   // get # of threads already accessing this addr Integer counter = (Integer)TH ...