Java Socket Creation花了太长时间

时间:2011-10-27 14:37:38

标签: java linux

我正在尝试在基于Intel的Linux机器上执行以下Java代码(Custom Minimal Linux version:Linux 2.6.18)。套接字创建耗时太长(约3分钟)。当我在Linux中运行Top命令时,它向我显示我的Java进程处于Sleep状态。有人可以告诉我这是怎么回事?

  

Java版本:1.6.0_24

try{
    System.out.println("Creating a Socket at: " + new Date());
    s = new Socket(hostname, p);
    System.out.println("Socket creation complete at: " + new Date());
    s.close();
}
  

UPDATE:使用Java 1.7(1.7.0_01)测试,它运行正常。整个程序运行在5以下   秒。套接字创建几乎立即返回。

2 个答案:

答案 0 :(得分:3)

我想这可能是DNS问题。您使用的是主机名还是IP?如果您使用的是名称,请尝试ping它。 ping需要多长时间?我想这需要很多时间。无论如何,尝试在您的Java程序中使用IP地址。我希望它能解决你的问题。

如果没有检查你的网络设置,防火墙,NAT等。可能从本地连接开始,即尝试在localhost上运行程序,然后在本地网络中的其他主机上运行,​​然后在其他网络中的主机上运行(如果需要) 。

祝你好运。

答案 1 :(得分:0)

我花了整整一个上午来绕过它。

在我的ubuntu中,我尝试将ipv6设置(系统设置 - >网络)从“自动”变为“忽略”,然后一切正常。

似乎这是JDK1.6的一个错误,我很快就会尝试JDK1.7。