搭建论坛网站,建设手机银行官方网站,重庆建筑公司100强,山东省中国建设银行网站背景 
在应用上云改造中#xff0c;业务场景如下#xff1a; 在使用ecs的场景中#xff0c;应用的ip都是固定的#xff1b;在使用k8s之后pod的ip就变的不固定了#xff0c;k8s提供了statefulset的模式来支持这种场景#xff0c;以固定域名的方式支持。 
问题 
在平台pod开…背景 
在应用上云改造中业务场景如下 在使用ecs的场景中应用的ip都是固定的在使用k8s之后pod的ip就变的不固定了k8s提供了statefulset的模式来支持这种场景以固定域名的方式支持。 
问题 
在平台pod开启statefulset模式之后应用启动就报错了 
*** buffer overflow detected ***: /usr/lib/jvm/java-1.7.0/bin/java terminated
/app/bes9.5/bin/iastool: line 70:    30 Aborted                 $JAVA -Djava.security.egdfile:/dev/./urandom -Djava.net.preferIPv4Stacktrue -Dcom.bes.installRoot$BES_ROOT -Dcom.bes.instanceRoot$BES_BASE -Djava.library.path$LD_LIBRARY_PATH -cp $CLI_CLASSPATH com.bes.enterprise.admin.cli.CLIMain $使用宝兰德web容器类似tomcat。 
分析 
上述问题报错后产生了core dump问题使用jstack 分析core dump看看是调用到那个方法报错的。  
java层面分析 
import java.net.InetAddress;
import java.net.UnknownHostException;public class Test {public static void main(String[] args){System.out.println(start ------------);try {InetAddress localHost  InetAddress.getLocalHost();System.out.println(localHost.getHostName());} catch (UnknownHostException e) {throw new RuntimeException(e);}}
}通过分析发现java代码 InetAddress.getLocalHost()调用报错如下代码调用native方法之后就需要到JVM的层面进行分析了。  
JVM层面 
Inet4AddressImpl.c 从上面可以看出hostname的最大长度是 64 
Inet6AddressImpl.c  使用IPv6协议栈支持1024个长度。 
总结 JDK bug地址: https://mail.openjdk.org/pipermail/net-dev/2012-July/004603.html 
解决方案1从bug描述来看JDK8已经进行了修复可以升级java版本建议使用 解决方案2可以设置启动产生支持默认支持IPv6协议栈-Djava.net.preferIPv6Stacktrue