最近尝试Spring Cloud遇到的坑真是不少,没用Spring Boot基础,从0开始。

今天在本地跑的好好的,部署到服务器的时候,redis部分报错,连不上redis数据库,一开始以为是配置上出了问题,因为jedis默认连接localhost,而本地环境就是localhost。

java.net.UnknownHostException: izuf6exyy60ycw5yrdcco0z: izuf6exyy60ycw5yrdcco0z: Name or service not known

调试了好久发现,izuf6exyy60ycw5yrdcco0z是阿里云ECS主机的主机名。

2151468443305.jpg

不会是,主机名解析不到IP吧。

默默地在hosts里加上一条解析

127.0.0.1 izuf6exyy60ycw5yrdcco0z

7a286d05d4974ee3a1a68af02c14f39e.jpeg

真的就解决了


总结:Linux下的/etc/hostname中可能会包含主机名,比如上面的izuf6exyy60ycw5yrdcco0z,而在/etc/hosts下面没有对应的映射。



深层的原因: 在大多数Linux操作系统中,都是以/etc/hosts中的配置查找主机名的,但是 Detian based system用/etc/hostname文件中的配置做主机名。

而Java 的InetAddress.java 调用 InetAddressImpl.java 的   public native String getLocalHostName() throws UnknownHostException; 来获取本地主机名, Java 的这个方法是native的,是本地系统的一个实现,所以在本地配置出现问题的情况下,Java 代码出现问题。



赞助本站,网站的持续发展离不开你们的支持!一分也是爱ヾ(◍°∇°◍)ノ゙
 本文链接: ,花了好多脑细胞写的,转载请注明链接喔~~
登陆
      正在加载评论