5
[hannel,192.168.0.46:40014] 15:08:03,642 - ERROR - org.jgroups.protocols.UDP - failed sending message to null (61 bytes)
java.lang.Exception: dest=/225.1.2.46:30446 (64 bytes)
    at org.jgroups.protocols.UDP._send(UDP.java:333)
    at org.jgroups.protocols.UDP.sendToAllMembers(UDP.java:283)
    at org.jgroups.protocols.TP.doSend(TP.java:1327)
    at org.jgroups.protocols.TP.send(TP.java:1317)
    at org.jgroups.protocols.TP.down(TP.java:1038)
    at org.jgroups.protocols.PING.sendMcastDiscoveryRequest(PING.java:220)
    at org.jgroups.protocols.PING.sendGetMembersRequest(PING.java:214)
    at org.jgroups.protocols.Discovery$PingSenderTask$1.run(Discovery.java:385)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
    at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:280)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:65)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:142)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:166)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
    at java.lang.Thread.run(Thread.java:595)
Caused by: java.io.InterruptedIOException: operation interrupted
    at java.net.PlainDatagramSocketImpl.send(Native Method)
    at java.net.DatagramSocket.send(DatagramSocket.java:612)
    at org.jgroups.protocols.UDP._send(UDP.java:324)
    ... 16 more

これは、サーバーでの負荷テスト中に発生しています。私はそれについて心配する必要があります。ログにそのメッセージが記録されることを除けば、すべて正常に動作しているようです。

4

3 に答える 3

3

マット b への応答として、「null へのメッセージの送信に失敗しました」というメッセージは誤解を招くものです。本当の問題は、InterruptedIOException です。これは、UDP を送信していたスレッドで誰かが interrupt() を呼び出したことを意味します。ほとんどの場合、割り込みは JGroups 内で生成されます。(JGroups チャネルを開始してから停止した場合を除きます。)

スタック トレースを見ると、中断された I/O は Discovery プロトコルからのものでした。他のクラスター メンバーを検出しようとしていました。したがって、この例外によってあなたのメッセージが失われることはありません。

これを本当に理解するには、もっと知る必要があります。

于 2009-01-22T06:20:10.740 に答える
1

「null」に送信するとは、単一のメンバーにメッセージを送信するのではなく、クラスター全体に送信することを意味します。同意します。これは少し誤解を招くので、後のバージョンでこれを変更しました。IIRC の「null」は「cluster」または「group」に置き換えられました。

ここでの「null」は宛先を指します。null 宛先アドレスは、クラスタ全体に送信することを意味します。

InterruptedIOException は、JGroups によって停止されている送信側スレッドから発生します。これは、たとえば、検出フェーズで返すのに十分な応答がすでにある場合に発生し、送信タスクが停止します (つまり、中断されます)。

これは、JGroups の以降のバージョンでも修正されました。ベラ

于 2011-08-13T12:50:51.860 に答える
0

「null」にメッセージを送信しているため、エラーが発生する可能性はありますか?

エラー - org.jgroups.protocols.UDP - メッセージを null に送信できませんでした

そうしないと、コード サンプル、ネットワークに関する情報、問題が発生した特定の状況などがなければ、他の人があなたを助けるのはおそらくかなり難しいでしょう。

于 2008-12-16T21:29:34.983 に答える