1

ベンダーの 1 社のドライバーが、ほぼ 1 年間動作していたマシンで、先週突然故障し始めました。ドライバーが出力する最後の 2 つの説明メッセージは、3 分間隔になりました (以前は秒間隔でした)。コードをリバース エンジニアリングすると、java.rmi.Naming.bind() の呼び出し中に 3 分間の遅延が発生することがわかりました。

これをトラブルシューティングし、bind() の呼び出しからより多くの情報を取得するための出発点は何ですか? 成功または失敗の表示を返さず、例外をスローしているようには見えません。一定の 3 分間の遅延は、プロセス中のある時点でタイムアウトが発生していることを意味すると思いますが、なぜ失敗の兆候がないのでしょうか?

4

2 に答える 2

2

これはほぼ間違いなくDNSの問題です。DNSルックアップと逆引き参照時間を確認してください。Naming.bind()自体は、両端で簡単です。

于 2012-08-20T23:37:48.943 に答える
0

私自身の質問に答える:

Java RMI が java.util.logging にログを記録しているように見えます。したがって、java.util.logging を構成して Java RMI が何を行っているかを確認し、問題をデバッグできるようにします。

(私の場合、log4j を使用しているため、java.util.logging メッセージを log4j にルーティングするライブラリを見つけました。)

ロギングを有効にすると、RMI が間違った IP アドレスに接続しようとして 3 分間を費やしていたことがわかりました。これは、誰かがホスト ファイルに追加した間違ったエントリのおかげで、localhost と見なされていました。

于 2012-08-31T18:37:48.060 に答える