生产环境 Bug No3

前言

    生产环境使用阿里云的消息队列服务,在 tomcat 容器 WAR 包中使用官方提供的 SDK,但是在启动 tomcat 的时候,报错了。

 

报错信息

    部署 tomcat 的 ECS 为双十一后购买的服务器,新的服务器在创建的时候主机名更改为 16 位字符;

    生产环境之前有一批老机器,大概是 2016 年 6月份买的,上面也部署了相同配置的 tomcat,并使用同一个 MQ 队列,但是 tomcat 启动成功,这让人很是费解,在检查了配置文件和 SDK 文档比对之后,竟然在老的机器上启动成功,很伤。

    报错信息如下:

    

其中 java.net.UnknownHostException: 的错误也让人很费解。

    网上查了好多资料,后来定位到是 hostname 获取不到的原因,ECS 服务器的hostname 是配置在 /etc/hostname 中的,hostname 命令也可以正常读取主机名,在大多数 Linux 系统中(Redhat、Centos等)都是在 /etc/hosts 中获取主机名的,Detian 是从 /etc/hostname 中得到主机名的。

    Java 的 inetAddress.java 调用方法 getLocalHostName() 获取主机名,属于系统调用,所以在 centos 上面,会读取 /etc/hosts 文件来获取主机名,但阿里云新购服务器恰恰没有在 /etc/hosts 中定义主机名,老的机器有这个定义。

 

解决

    在 /etc/hosts 文件中添加 本机IP hostname,然后 tomcat 正常启动。

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/2470065/blog/796196

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值