Java:间歇性未知后异常

Java:间歇性未知后异常,java,exception,dns,inetaddress,unknown-host,Java,Exception,Dns,Inetaddress,Unknown Host,在我运行在Jboss服务器上的应用程序中,我们与另一个应用程序建立了http连接。 两个应用程序都位于同一数据中心。 我们使用VIP连接到应用程序。 这在生产中运行良好,但当我们得到“java.net.UnknownHostException”时,它只占很小的百分比。这一比例非常低(~0.2%),但考虑到我们收到的请求数量巨大,实际数量不容忽视 误差是间歇性的,在时间和频率上都不遵循规律。有时我们一天中会得到200次,有时我们会连续3-4天得不到。有时,我们甚至在预期的交通量较低时(凌晨1-3点

在我运行在Jboss服务器上的应用程序中,我们与另一个应用程序建立了http连接。 两个应用程序都位于同一数据中心。 我们使用VIP连接到应用程序。 这在生产中运行良好,但当我们得到“java.net.UnknownHostException”时,它只占很小的百分比。这一比例非常低(~0.2%),但考虑到我们收到的请求数量巨大,实际数量不容忽视

误差是间歇性的,在时间和频率上都不遵循规律。有时我们一天中会得到200次,有时我们会连续3-4天得不到。有时,我们甚至在预期的交通量较低时(凌晨1-3点)也会收到

好吧,当DNS无法解析给定主机名的IP时,就会出现这种特殊的异常。我们查看了DNS设置/配置等,一切看起来都很好。 不希望在属性文件或/etc/hosts文件中直接使用IP地址

在这一点上,我不确定下一步可以做什么来进一步调试。 如有任何帮助/指导,将不胜感激

    Caused by: java.net.UnknownHostException: <VIP Name>
at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method) ~[?:1.6.0_25]
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:850) ~[?:1.6.0_25]
at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1201) ~[?:1.6.0_25]
at java.net.InetAddress.getAllByName0(InetAddress.java:1154) ~[?:1.6.0_25]
at java.net.InetAddress.getAllByName(InetAddress.java:1084) ~[?:1.6.0_25]
at java.net.InetAddress.getAllByName(InetAddress.java:1020) ~[?:1.6.0_25]
at org.apache.http.impl.conn.DefaultClientConnectionOperator.resolveHostname(DefaultClientConnectionOperator.java:242) ~[httpclient-4.1.2.jar:4.1.2]
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:130) ~[httpclient-4.1.2.jar:4.1.2]
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149) ~[httpclient-4.1.2.jar:4.1.2]
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121) ~[httpclient-4.1.2.jar:4.1.2]
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:573) ~[httpclient-4.1.2.jar:4.1.2]
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:425) ~[httpclient-4.1.2.jar:4.1.2]
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820) ~[httpclient-4.1.2.jar:4.1.2]
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754) ~[httpclient-4.1.2.jar:4.1.2]
at org.springframework.http.client.HttpComponentsClientHttpRequest.executeInternal(HttpComponentsClientHttpRequest.java:88) ~[spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:46) ~[spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:49) ~[spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:438) ~[spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:401) ~[spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
原因:java.net.UnknownHostException:
在java.net.Inet4AddressImpl.lookupAllHostAddr(本机方法)~[?:1.6.0_25]
在java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:850)~[?:1.6.0\u 25]
在java.net.InetAddress.getAddressFromNameService(InetAddress.java:1201)~[?:1.6.0_25]
在java.net.InetAddress.getAllByName0(InetAddress.java:1154)~[?:1.6.0_25]
在java.net.InetAddress.getAllByName(InetAddress.java:1084)~[?:1.6.0_25]
在java.net.InetAddress.getAllByName(InetAddress.java:1020)~[?:1.6.0_25]
在org.apache.http.impl.conn.DefaultClientConnectionOperator.resolveHostname(DefaultClientConnectionOperator.java:242)~[httpclient-4.1.2.jar:4.1.2]
在org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:130)~[httpclient-4.1.2.jar:4.1.2]
在org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)~[httpclient-4.1.2.jar:4.1.2]
在org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)~[httpclient-4.1.2.jar:4.1.2]
在org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:573)~[httpclient-4.1.2.jar:4.1.2]
在org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:425)~[httpclient-4.1.2.jar:4.1.2]
在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)~[httpclient-4.1.2.jar:4.1.2]
在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)~[httpclient-4.1.2.jar:4.1.2]
在org.springframework.http.client.HttpComponentsClientHttpRequest.executeInternal(HttpComponentsClientHttpRequest.java:88)~[spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
在org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:46)~[spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
在org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:49)~[spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
在org.springframework.web.client.restemplate.doExecute(restemplate.java:438)~[spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
在org.springframework.web.client.restemplate.execute(restemplate.java:401)~[spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]

您是否考虑过对主机使用的DNS进行非Java测试?在我看来,这不太可能是Java问题。您可以做的最基本的事情是部署一个监视工具,如查看DNS服务器的运行情况。除了ping探测之外,Smokeping还可以从周期性的DNS探测生成漂亮的图。谢谢你的回复。对我来说,这似乎不是Java的问题。我同意我们可以部署一个监控工具,它可以提供进出服务器的全部网络流量。然而,我打算这样开始。虽然不确定它是否完全有意义:)-暂时在/etc/hosts文件中添加IP主机组合。在接下来的几个小时里看它。如果错误消失了,那么可以确定它只与DNS相关。然后我将继续使用监控工具进行调试。我想到的还有一件事。我知道在这些系统上,ulimit不是最佳设置的。问题是,低ulimit会导致未知的后异常吗?或者,如果ulimit增加了,它会抛出另一个异常?@user1270392只是出于好奇,我想你没有找到这个问题的根本原因吧?我也经历过类似的事情,也不认为Java是罪魁祸首,但如果你发现它是出于某种原因,那么我很想知道。