诊断间歇性连接超时? - java

我有一个Java客户端,该客户端调用一个线程来命中servlet,并从服务器上的日志中检索最后几行,并在客户端上显示检索到的日志行。日志线程每隔一段时间就会超时。
应用程序服务器是Tomcat,但是该错误在Tomcat和Websphere上都可以间歇地重现,Windows上的客户端和Windows上的服务器。对于Windows上的客户端和AIX上的服务器,到目前为止,此问题尚未发生。我必须提到代码在很多迭代中都是稳定的,并且突然开始出现这些问题。

到目前为止我尝试过的

  • 日志读取客户端每0.1秒调用一次线程(用于睡眠)。我尝试将代码中的睡眠时间增加到5秒,但这没有帮助。
  • 在创建URLConnection对象时,我设置了诸如connectTimeout和readTimeout之类的属性。我认为readTimeout可能不是一个原因,因为那样会引发Socket异常。
  • 3我尝试使用Tomcat配置。

    Connector port="9962" protocol="HTTP/1.1" connectionTimeout="200000" redirectPort="8445" acceptCount="30"
    

    4。使用后,URL连接被“断开”。

    5堆栈跟踪似乎暗示该请求从未到达应用程序服务器,这可能是由于某些OS层对连接的限制。但是在那种情况下,Windows的事件查看器中会有一个条目。

     java.net.ConnectException: Connection timed out: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(Unknown Source)
        at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
        at java.net.PlainSocketImpl.connect(Unknown Source)
        at java.net.SocksSocketImpl.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at sun.net.NetworkClient.doConnect(Unknown Source)
        at sun.net.www.http.HttpClient.openServer(Unknown Source)
        at sun.net.www.http.HttpClient.openServer(Unknown Source)
        at sun.net.www.http.HttpClient.<init>(Unknown Source)
        at sun.net.www.http.HttpClient.New(Unknown Source)
        at sun.net.www.http.HttpClient.New(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)
    

    您将如何诊断此问题?服务器日志未显示任何可疑内容。据我所知,客户端和服务器没有任何其他网络设备,因此不需要代理,并且防火墙已关闭。
    到目前为止,我还没有使用过保持生命。

    参考方案

    很难预测是什么原因造成的。但是,下一步应该是尝试在客户端和/或服务器上运行数据包嗅探器,以查看TCP连接请求是否正在将其发送到Windows计算机。

    如果Tomcat和Websphere都出现此问题,则表明原因在较低级别;否则,请执行以下步骤。即在操作系统中的TCP / IP堆栈,防火墙...或网络中。 (如果服务器在虚拟环境中运行,则可能是虚拟网络中的一个故障。)

    Java Applets和.Net dll之间的集成 - java

    我是Java小程序的新手。我的新任务是创建一个可以从C#.Net dll调用方法的Java Applet,我在这里使用UnmanagedExports找到了解决方案:UnmanagedExports当从Applet查看器窗口中的NetBeans运行它时,我的applet运作良好,而且当我将applet嵌入到网页中时,它也运作良好。我试图在本地IIS上发布包含…

    从JAVA调用方法C#.NET - java

    我有一个C#.NET项目中创建的dll,我想从Java程序中调用方法。我想知道是否存在实现此目标的机会,然后遇到了JNA和JNI。我应该使用哪一个?有什么建议么?我只需要在使用C#.NET编写的类中调用方法并处理Java程序的结果即可。 参考方案 这取决于您的应用程序,但是您可以将C#DLL放在服务中,例如WCF并以这种方式将功能公开给Java代码。使用ws…

    java.net.URI.create异常 - java

    java.net.URI.create("http://adserver.adtech.de/adlink|3.0") 抛出java.net.URISyntaxException: Illegal character in path at index 32: http://adserver.adtech.de/adlink|3.0 虽然n…

    Java:正则表达式模式匹配器是否有大小限制? - java

    我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)

    Java:线程池如何将线程映射到可运行对象 - java

    试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …