事故原因流量高峰时微服务间调用频繁java.net.UnknownHostException关键字:unknownhost,UnknownHost排查思路1.Kubernetes集群中出现的UnknownHost,第一个假设问题是Kubernetes的svc有问题,但是线上业务的svc没有人删除,所以排除这个问题。2、有没有可能是网络问题?过多的网络流量导致了一些问题。后来查看了监控,排除了网络不够的原因。3、查阅了一些资料,发现是我们使用的基础包镜像有问题。我们使用Alpine基础包作为java环境。原因AlpineLinux使用musl,这可能与其他Linux发行版使用的glibc实现不同。DNS问题在容器化中最容易遇到,即musl实现的DNS服务不会使用resolv.conf文件中的search和domain配置,一些使用DNS进行服务发现的框架可能会遇到这个问题.[来自InfoQ]原文:由于InfoQ的解决方案是底层包问题,我这里替换底层包,这里是我的DockerfileFROMcentos:centos7.4.1708MAINTAINERxiaomai728xxxx@qq.comRUNrm-rf/etc/yum.repos.d/*.repo#最近去oracle下载的时候发现需要登录,于是下载ADDjdk-8u192-linux-x64.tar.gz/usr/local/RUNln-s/usr/local/jdk1.8.0_192/usr/local/java#这里使用阿里云的yum镜像仓库COPYCentos-7.repo/etc/yum.repos.d/COPYepel-7.repo/etc/yum.repos.d/#解决微信解码问题COPYlocal_policy.jar/usr/local/jdk1.8.0_192/jre/lib/securityCOPYUS_export_policy.jar/usr/local/jdk1.8.0_192/jre/lib/securityRUNyummakecache&&\yuminstall-ynet-toolsnmap-ncattelnetnet-toolsjqcurlopensslwgetopenssl-develkde-l10n-Chineseglibc-common&&\yumcleanall&&\rm-rf/var/cache/yum&&\rm-rf/anaconda-post.log&&\localedef-c-fUTF-8-izh_CNzh_CN.utf8#解决中文乱码问题ENVLC_ALLzh_CN.utf8ENVJAVA_HOME/usr/local/javaENVPATH$JAVA_HOME/bin:$PATHENVJRE_HOME${JAVA_HOME}/jreENVCLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/libCMD["java","-version"]JDK8下载地址:https://www.oracle.com/techne...解码包下载地址:local_policy.jarUS_export_policy.jarhttps://www.oracle.com/techne。..意外发现:DNS丢包问题在/var/log/messages中发现了这样一个问题:nf_conntrack:tablefull,droppingpacket原来Docker会调用nf_conntrack连接跟踪模块Linux为每个经过内核的数据包生成networkstack一条新的连接记录,当服务器处理过多的连接时,连接跟踪表已满,服务器会丢弃新的连接数据包。注:内核大于4.20后的内核版本nf_conntrack_ipv4改为nf_conntrack
