В настоящее время я тестирую сеть только с одним заказчиком 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 ГБ ОЗУ.
В чем может быть причина? Или это нормально? У меня нет никаких чувств.