1

TCPトランスポートを使用してInfinispanを構成しようとしています。

すべてのTCPPING.initialHosts潜在的なクラスターノードのリストを入力すると、クラスターはまったく接続されません-約15の潜在的なノードがあり、それらのほとんどは死んでおり、通常は2つまたは3つだけが生きています。

ただし、TCPPING.initialHosts2〜3個のホストのみのリストを入力すると、クラスターは正常に作成されます。

私は何を間違えますか?

更新:ログとスタックトレースで確認できる限り、ライブノード間の接続が作成され、ノードはいくつかのメッセージを交換します。ただし、クラスターはまだ形成されていません。

更新:これが:を作成するコードJChannelです

    JChannel ch = new JChannel(false);
    ProtocolStack stack = new ProtocolStack();
    ch.setProtocolStack(stack);

    // TCPPING is responsible for discovery
    TCPPING tcpping = new TCPPING();
    List<IpAddress> initial_hosts = ... // get lists of hosts, list can be quite big
    tcpping.setInitialHosts(initial_hosts);
    tcpping.setErgonomics(false);
    tcpping.setPortRange(0);
    tcpping.setNumInitialMembers(3);

    TCP tcp = new TCP();
    tcp.setBindAddress(InetAddress.getByName(server.getHostName()));
    tcp.setBindPort(server.getPort());
    tcp.setThreadPoolMaxThreads(30);
    tcp.setOOBThreadPoolMaxThreads(30);

    NAKACK nakack = new NAKACK();
    nakack.setUseMcastXmit(false);
    nakack.setDiscardDeliveredMsgs(false);

    MERGE2 merge = new MERGE2();

    RSVP rsvp = new RSVP();
    rsvp.setValue("timeout", 60 * 1000);
    rsvp.setValue("resend_interval", 500);
    rsvp.setValue("ack_on_delivery", false);

    stack
        .addProtocol(tcp)
        .addProtocol(tcpping)
        .addProtocol(merge)
        .addProtocol(new FD_SOCK())
        .addProtocol(new FD())
        .addProtocol(new VERIFY_SUSPECT())
        .addProtocol(nakack)
        .addProtocol(new UNICAST2())
        .addProtocol(new STABLE())
        .addProtocol(new GMS())
        .addProtocol(new UFC())
        .addProtocol(new MFC())
        .addProtocol(new FRAG2())
        .addProtocol(rsvp);
    stack.init();

    return ch;
4

1 に答える 1

4

JGroups は 15 のホストへの接続を確立しようとしますが、そのうちの 2 ~ 3 しか稼働していないため、検出フェーズに時間がかかりすぎる可能性があります。TCP.scok_conn_timeout を低い値 (200?) に設定して、最大 200 ミリ秒後にダウンしたホストへの接続から戻るようにすることをお勧めします。おそらく GMS.join_timeout を増やす必要があり、TCPPING.timeout も同様です。それらは、最長の検出フェーズよりも高くする必要があります。

于 2013-01-24T08:23:18.023 に答える