Javaソケットの作成に時間がかかりすぎる

IntelベースのLinuxマシン(カスタム最小Linuxバージョン:Linux 2.6.18)で次のJavaコードを実行しようとしています。ソケットの作成には時間がかかりすぎます(〜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();
}

アップデート:Java 1.7(1.7.0_01)でテストされており、正常に動作します。全プログラムは5歳未満で実行されます   秒。ソケットの作成はほぼ即座に戻ります。

2
追加された 編集された
ビュー: 5
シェルプロンプトから(あなたのコードと同じ および で) telnet )?
追加された 著者 NPE,
Telnetはしばらく待って、「外部ホストによって接続が切断されました」というメッセージを受け取ります。私はサーバーが動作していることを知っています。ソケットを作成するのに長い時間がかかった後、私のJavaプログラムは実際にそのサーバーとうまくやりとりすることができました。問題はソケット作成時間だけです。
追加された 著者 M99,

2 答え

おそらくDNSの問題だと思います。ホスト名またはIPを使用していますか?名前を使用している場合は、pingを実行してください。どのくらいの時間がかかりますか?私はそれは多くの時間がかかるだろうと思う。とにかくあなたのJavaプログラムでIPアドレスを使用しようとします。私はあなたの問題を解決することを願っています。

ネットワーク設定、ファイアウォール、NATなどをチェックしない場合は、おそらくローカル接続から開始します。つまり、ローカルホスト上のプログラムを試してから、ローカルネットワーク内の他のホスト上で試してから、別のネットワーク上のホストで試してみてください。

がんばろう。

3
追加された
telnet IP port はどれくらいかかりますか?
追加された 著者 Peter Lawrey,
私はIPアドレスを使用しています。ドメイン名ではありません。接続しようとしているサーバーが同じネットワーク(1つのホップ)にあるため、Pingは非常に高速です。
追加された 著者 M99,
Telnetはしばらく待って、「外部ホストによって接続が切断されました」というメッセージを受け取ります。私はサーバーが動作していることを知っています。ソケットを作成するのに長い時間がかかった後、私のJavaプログラムは実際にそのサーバーとうまくやりとりすることができました。問題はソケット作成時間だけです。
追加された 著者 M99,

私はそれを回避するために全日朝を過ごしました。

In my ubuntu, I try to turn the ipv6 setting(System Settings->Network) from "Automatic" to "Ignore", then everything is ok.

JDK1.6のバグだと思っています。すぐにJDK1.7を試してみます。

0
追加された