项目

一般

简介

一起IP地址解析相关的异常排查和解决

佘 肃徽大约 3 年 之前添加

1、今天接到一个问题反馈,同样的应用包,同样的aas版本,测试环境上可以正常部署,生产环境下无法正常部署。按正常流程索取日志,日志内容很少,没有报错,最后有日志提示slf4j有多重绑定错误。

先处理这个问题,在aasv10添加相关vm参数后,重启aas,启动过程中发现有异常的地方,见下图

可以看到,aas在初始化jmx时,发布了错误的url地址,ip地址处为 0.0.0.1 。查看了jmx配置,是在0.0.0.0上执行监听,按照正常处理,此处url上的ip地址要么为hostname,要么是127.0.0.1或者是外部绑定的弹性ip。查看后续的日志,发现应用在连dubbo的时候,也是这个ip,所以造成无法链接的异常。

通过查资料,猜测是代码在用inetaddress.getlocalhost()获取本机IP的时候发生了错误,继续查资料,看到有个帖子 https://stackoverflow.com/questions/18488809/java-inetaddress-getlocalhost-returns-strange-ip,里面说了

The problem is that my hostname will consists only of numbers and could not be resolved. I change my /etc/hostname with characters at first position and problem has solved. 当hostname全部由数字组成的时候,解析IP会出错,需要避免将hostname设置成全数字。

去生产环境上查看hostname果然为全数字,遂将hostname改成常规名字,重启aas,问题解决。