You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hyperledger Caliper远程连接Fabric节点报错:无有效Peer响应

Hyperledger Caliper测试报错:No valid responses from any peers 排查方案

问题概述

远程服务器部署3组织(各1Peer节点)的Hyperledger Fabric网络,使用Hyperledger Caliper基于asset-transfer-basic链码开展基准测试。本地环境测试正常,但修改网络配置URL并在证书生成阶段添加SANs后,测试失败,worker迭代环节抛出No valid responses from any peers错误。远程Peer节点的TLS握手日志显示连接成功,且本地通过peer命令可正常查询链码数据。

错误日志

Caliper报错信息

error: [Transaction]: Error: No valid responses from any peers. Errors: +0000 debug [worker-message-handler] Handled "test" message for Worker (24258) error [connectors/v2/FabricGateway] Failed to perform submit transaction [DeleteAsset] using arguments [2_1],  with error: Error: No valid responses from any peers. Errors: at newEndorsementError (/home/ubuntu/caliper/node_modules/fabric-network/lib/transaction.js:49:12) at getResponsePayload (/home/ubuntu/caliper/node_modules/fabric-network/lib/transaction.js:17:23) at Transaction.submit (/home/ubuntu/caliper/node_modules/fabric-network/lib/transaction.js:212:28) at async V2FabricGateway._submitOrEvaluateTransaction (/home/ubuntu/caliper/node_modules/@hyperledger/caliper-fabric/lib/connector-versions/v2/FabricGateway.js:376:26) at async V2FabricGateway._sendSingleRequest (/home/ubuntu/caliper/node_modules/@hyperledger/caliper-fabric/lib/connector-versions/v2/FabricGateway.js:170:16) at async V2FabricGateway.sendRequests (/home/ubuntu/caliper/node_modules/@hyperledger/caliper-core/lib/common/core/connector-base.js:78:28) at async MyWorkload.cleanupWorkloadModule (/home/ubuntu/caliper/workload/readAsset.js:52:13) at async CaliperWorker.executeRound (/home/ubuntu/caliper/node_modules/@hyperledger/caliper-core/lib/worker/caliper-worker.js:214:13) at async WorkerMessageHandler._handleTestMessage (/home/ubuntu/caliper/node_modules/@hyperledger/caliper-core/lib/worker/worker-message-handler.js:235:22) at async ProcessMessenger.<anonymous> (/home/ubuntu/caliper/node_modules/@hyperledger/caliper-core/lib/worker/worker-message-handler.js:93:13)

Peer节点TLS握手日志

DEBU [core.comm] ServerHandshake -> Server TLS handshake completed in 10.515647ms server=PeerServer remoteaddress=18.216.197.203:39598
DEBU [core.comm] ServerHandshake -> Server TLS handshake completed in 12.640673ms server=PeerServer remoteaddress=18.216.197.203:39620
DEBU [core.comm] ServerHandshake -> Server TLS handshake completed in 18.734087ms server=PeerServer remoteaddress=18.216.197.203:39610
DEBU [core.comm] ServerHandshake -> Server TLS handshake completed in 17.251823ms server=PeerServer remoteaddress=18.216.197.203:39626
DEBU [core.comm] ServerHandshake -> Server TLS handshake completed in 9.189911ms server=PeerServer remoteaddress=18.216.197.203:39628

环境配置

Caliper networkconfig文件

name: Caliper test
version: "2.0.0"

caliper:
  blockchain: fabric
  sutOptions:
    mutualTls: true

channels:
  - channelName: mychannel
    contracts:
      - id: basic

organizations:
  - mspid: Org1MSP
    identities:
      certificates:
        - name: "User1"
          clientPrivateKey:
            path: "network-profiles/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/priv_sk"
          clientSignedCert:
            path: "network-profiles/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pem"
    connectionProfile:
      path: "network-profiles/peerOrganizations/org1.example.com/connection-org1.yaml"
      discover: false
  - mspid: Org2MSP
    identities:
      certificates:
        - name: "User1"
          clientPrivateKey:
            path: "network-profiles/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/keystore/priv_sk"
          clientSignedCert:
            path: "network-profiles/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/signcerts/User1@org2.example.com-cert.pem"
    connectionProfile:
      path: "network-profiles/peerOrganizations/org2.example.com/connection-org2.yaml"
      discover: false
  - mspid: Org3MSP
    identities:
      certificates:
        - name: "User1"
          clientPrivateKey:
            path: "network-profiles/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/keystore/priv_sk"
          clientSignedCert:
            path: "network-profiles/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/signcerts/User1@org3.example.com-cert.pem"
    connectionProfile:
      path: "network-profiles/peerOrganizations/org3.example.com/connection-org3.yaml"
      discover: false

本地peer命令查询结果

peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'
[{"AppraisedValue":300,"Color":"blue","ID":"asset1","Owner":"Tomoko","Size":5,"docType":"asset"},{"AppraisedValue":400,"Color":"red","ID":"asset2","Owner":"Brad","Size":5,"docType":"asset"},{"AppraisedValue":500,"Color":"green","ID":"asset3","Owner":"Jin Soo","Size":10,"docType":"asset"},{"AppraisedValue":600,"Color":"yellow","ID":"asset4","Owner":"Max","Size":10,"docType":"asset"},{"AppraisedValue":700,"Color":"black","ID":"asset5","Owner":"Adriana","Size":15,"docType":"asset"},{"AppraisedValue":800,"Color":"white","ID":"asset6","Owner":"Michel","Size":15,"docType":"asset"}]

排查方向与解决方法

1. 检查连接配置文件完整性

每个组织的connection-orgX.yaml需确认:

  • Peer的URL是否为远程服务器的公网IP/域名,端口正确(默认grpcs端口7051)
  • TLS根证书路径指向Caliper主机上正确导入的文件,且证书内容与远程Peer的根证书一致
  • 开启mutualTls后,connection配置中是否指定了客户端证书和私钥路径(与networkconfig中的User1证书路径对应)

2. 验证链码背书策略

DeleteAsset属于提交类交易,需满足链码背书策略:

  • 查看asset-transfer-basic链码的背书策略,默认可能要求多数组织(如2/3)的Peer背书
  • 检查Caliper的workload配置是否使用了足够的组织身份提交交易,或在networkconfig中是否为交易指定了正确的背书节点
  • 若discover=false,需手动在connection配置中添加所有需要参与背书的Peer节点,否则Caliper无法找到这些节点完成背书

3. 确认SAN配置正确性

证书生成时添加的SAN必须覆盖客户端连接Peer时使用的地址:

  • 用以下命令检查Peer证书的SAN字段:
    openssl x509 -in peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt -text -noout | grep -A 3 "Subject Alternative Name"
    
  • 确认输出中包含远程服务器的公网IP/域名,否则客户端会因证书身份验证失败拒绝交易响应(即使TLS握手成功,后续交易验证仍可能失败)

4. 调整交易超时设置

远程网络延迟可能导致Caliper默认超时不足:

  • 在benchmark配置文件中添加超时参数:
    workload:
      options:
        transactionTimeout: 30 # 单位:秒
    
  • 或在Fabric连接器配置中调整更细粒度的超时(如endorseTimeout、commitTimeout)

5. 深度排查Peer节点日志

虽然TLS握手成功,但Peer可能在交易处理阶段出错:

  • 查看Peer的debug日志,搜索DeleteAsset或endorsement相关条目,确认是否存在背书失败、链码容器异常、权限拒绝等具体错误
  • 检查Peer的链码容器是否正常运行,用docker logs <chaincode-container-id>查看链码日志

内容的提问来源于stack exchange,提问作者ov1n

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 10:34:57