2016-04-13 16 views
0

私は、異なるマシン上の複数のrmiサーバーに接続するrmiクライアントを持っています。クライアント側で接続のタイムアウトが発生することがあります。それはランダムに発生し、私がそれを見つけて再びサーバーに接続しようとすると、常に成功します。マシン間にファイアウォールはありません。実際の接続を試みていないjava rmiソケット接続のタイムアウト

Wiresharkでネットワークトラフィックをキャプチャしようとしましたが、クライアントからの発信SYNパケットがないので、接続を確立しようとしていないようです。

何が原因である可能性がありますか?そこで何が起こっているのか、どうすればわかりますか?

編集:RMIからログ:

4:02:44 AM sun.rmi.transport.tcp.TCPEndpoint newSocket 
FINER: task-6786: opening socket to [c1w7IE10-0059:1099] 
4:02:44 AM sun.rmi.transport.proxy.RMIMasterSocketFactory createSocket 
FINE: task-6786: host: c1w7IE10-0059, port: 1099 

ポートとホストが正しいですが、何のSYNパケットをホストに送信されません。

編集:スタックトレース

ERROR: Error: com.kerio.at.lib.exception.KRemoteOperationFailedException: java.rmi.ConnectException: Connection refused to host: c1w7IE10-0059; nested exception is: 
    java.net.ConnectException: Connection timed out: connect 
com.kerio.at.lib.exception.KRemoteOperationFailedException: java.rmi.ConnectException: Connection refused to host: c1w7IE10-0059; nested exception is: 
    java.net.ConnectException: Connection timed out: connect 
    at com.kerio.at.lib.testmanager.rmi.client.TestManagerClient.connect(TestManagerClient.java:88) 
    at com.kerio.at.lib.cml.scheduling.RunTestTask.connectToNode(RunTestTask.java:485) 
    at com.kerio.at.lib.cml.scheduling.RunTestTask.call(RunTestTask.java:68) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.rmi.ConnectException: Connection refused to host: c1w7IE10-0059; nested exception is: 
    java.net.ConnectException: Connection timed out: connect 
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source) 
    at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source) 
    at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source) 
    at sun.rmi.server.UnicastRef.newCall(Unknown Source) 
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) 
    at java.rmi.Naming.lookup(Unknown Source) 
    at com.kerio.at.lib.testmanager.rmi.client.TestManagerClient.connect(TestManagerClient.java:59) 
    ... 9 more 
Caused by: java.net.ConnectException: Connection timed out: connect 
    at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.connect(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 java.net.Socket.<init>(Unknown Source) 
    at java.net.Socket.<init>(Unknown Source) 
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown Source) 
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown Source) 
+0

もしあなたが助けを求めているのであれば、あなたのコードを投稿するかもしれません....それがなければ何が間違っているのか推測できません。 – Aeldred

+0

システムプロパティ 'sun.rmi.transport.tcp.responseTimeout'またはプログラムからソケットタイムアウトを増やすことはできますか? それからもう一度確認してください。 –

+1

@AtaurRahmanMunnaなぜですか?これはクライアントでの読み取りタイムアウトです。この問題を回避しても、接続の問題は解決しません。 – EJP

答えて

0

いくつかの原因があります。

  • 外部ファイアウォールは、内部ファイアウォールが( "iptablesの" と思う)の要求をブロックしている要求
  • をブロックしているが、
  • 仮想マシンを使用している場合、バーチャルネットワークの間欠的または負荷関連の問題のために要求が失われています
  • これは断続的なルーティング問題の可能性があります。例えばマシンに2つのNICがある場合、誤った構成のDHCPによってトラフィックが誤ってルーティングされる可能性があります。
  • アプリケーションで間違ったIPアドレスを使用することがありました。例えばWiresharkのキャプチャに表示されないループバックアドレスを使用することがありました。

我々は暫定的または積極的排除することができますこれらのいくつか。しかし、あなたのローカルネットワーキング環境についてのあなたの知識が不完全であるか期限切れである可能性があるので注意してください。

+0

あなたの答えをありがとう。ファイアウォールは問題ではないと私は確信しています。マシンは仮想ですが、クライアントマシンのトラフィックをキャプチャするので、パケットが失われる可能性がありますが、そうではありません。誤った設定のDHCPと同じです。だからあなたの最後の点が残っています。それを確認する方法やそれを否定する方法はありますか? –

0

私はDNSの問題であることが判明しました。私はdnsキャッシュ(Windowsサービスの 'dns client')を無効にし、問題は消えました。

彼のアドバイスのためにbiliさんに感謝します。

関連する問題