Это нормально, что CommitListener занимает до 70 секунд для простых транзакций в (Hyperledger 2.0)? В чем может быть проблема? - PullRequest
0 голосов
/ 15 апреля 2020

В настоящее время я тестирую сеть только с одним заказчиком RAFT, двумя организациями с двумя пирами на ORG. Цепной код установлен только на одном узле. Все сверстники в канале. Транзакция, которую я делаю на стороне цепочки, выглядит следующим образом:

    async createPrivateEntry(ctx) {
        if(!totalControlOrganisations.includes(ctx.clientIdentity.getMSPID())) { 
            console.info('============= END : Data not added ==========='); 
            return `${uid} status is not updated`;
        }
        const transientData = getTransient(ctx);
        const uid = transientData[0];
        const entry = transientData[1];
        ctx.stub.putPrivateData(privateCollection, uid, Buffer.from(entry));
        console.info('============= END : Private dat added ===========');
        return "Private entry created";
    }

Мой Node.js клиент вызывает эту функцию следующим образом:

function getTransient(ctx) {
    var MAP = ctx.stub.getTransient();
    var result = JSON.parse(MAP.get("privatePayload").toString('utf8'))
    return result;
};
....
                const privatePayload = new Buffer(JSON.stringify({"Args":args})).toString('base64');
                const result = await gateway["contract"].createTransaction(func).setTransient({"privatePayload" : privatePayload}).submit();
                data = result.toString();
....

Часть профиля соединения:

    "client": {
        "organization": "org1",
        "connection": {
            "timeout": {
                "peer": {
                    "endorser": "300"
                },
                "orderer": "300"
            },
        "connection-options": {
        "grpc.max_receive_message_length": -1,
        "grpc.max_send_message_length": -1,
        "grpc.keepalive_time_ms": 120000, 
        "grpc.http2.min_time_between_pings_ms": 120000, 
        "grpc.keepalive_timeout_ms": 20000, 
        "grpc.http2.max_pings_without_data": 0, 
        "grpc.keepalive_permit_without_calls": 1 
    }
        }
    }

Стандартное время ожидания пакета - 2 с.

В моем контейнере с цепочечным кодом я вижу почти мгновенно:

2020-04-15T11:55:31.281Z info [shim:lib/handler.js]                               [channel-e90f1f89] Calling chaincode Invoke() succeeded. Sending COMPLETED message back to peer

В моем партнере я вижу:

2020-04-15 11:56:51.691 UTC [gossip.state] commitBlock -> DEBU 9f40 [channel] Committed block [18] with 1 transaction(s)

Это заняло 70 секунд. Иногда я не знаю, почему время сокращается почти до 40 секунд. То же самое происходит с не частными транзакциями. По умолчанию мой веб-клиент имеет время ожидания 60 секунд, поэтому очень часто он не может обработать запрос.

Сама полезная нагрузка для этих транзакций была чем-то вроде «TEST». Заказчик и каждый узел работают на отдельных 2vCPU с 7,5 ГБ ОЗУ.

В чем может быть причина? Или это нормально? У меня нет никаких чувств.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...