我试图在基于Intel的Linux机器上执行以下Java代码(自定义最小Linux版本:Linux2.6.18)。套接字创建花费的时间太长(~ 3分钟)。当我在Linux中运行Top命令时,它向我展示了我的Java进程处于睡眠状态。有人能告诉我这是怎么回事吗?
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();
}更新:使用Java1.7 (1.7.0_01)进行测试,并且运行良好。整个程序在5秒内运行。套接字创建几乎立即返回。
发布于 2011-10-27 14:44:33
我想这可能是DNS的问题。您使用的是主机名还是IP?如果您使用的是名称,请尝试使用它。平需要多长时间?我想这需要很长时间。无论如何,尝试在您的java程序中使用IP地址。我希望它能解决你的问题。
如果不检查您的网络设置、防火墙、NAT等,则可能从本地连接开始,即在本地主机上尝试您的程序,然后在本地网络中的其他主机上,然后在其他网络中的主机上(如果需要的话)。
祝好运。
发布于 2011-12-01 03:47:00
我花了整整一个早上的时间来解决这个问题。
在我的ubuntu中,我尝试将ipv6设置(Settings>Network)从“自动”转换为“忽略”,然后一切正常。
它似乎是JDK1.6的一个bug,我很快就会尝试JDK1.7。
https://stackoverflow.com/questions/7917585
复制相似问题