计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
弹性伸缩 AS
镜像服务 IMS
专属主机 DeH
函数工作流 FunctionGraph
云手机服务器 CPH
Huawei Cloud EulerOS
网络
虚拟私有云 VPC
弹性公网IP EIP
虚拟专用网络 VPN
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
VPC终端节点 VPCEP
云连接 CC
企业路由器 ER
企业交换机 ESW
全球加速 GA
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
边缘安全 EdgeSec
威胁检测服务 MTD
CDN与智能边缘
内容分发网络 CDN
CloudPond云服务
智能边缘云 IEC
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
云搜索服务 CSS
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
数据可视化 DLV
数据湖工厂 DLF
湖仓构建 LakeFormation
企业应用
云桌面 Workspace
应用与数据集成平台 ROMA Connect
云解析服务 DNS
专属云
专属计算集群 DCC
IoT物联网
IoT物联网
设备接入 IoTDA
智能边缘平台 IEF
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
国际站常见问题
ICP备案
我的凭证
支持计划
客户运营能力
合作伙伴支持计划
专业服务
区块链
区块链服务 BCS
Web3节点引擎服务 NES
解决方案
SAP
高性能计算 HPC
视频
视频直播 Live
视频点播 VOD
媒体处理 MPC
实时音视频 SparkRTC
数字内容生产线 MetaStudio
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
存储容灾服务 SDRS
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属分布式存储服务 DSS
容器
云容器引擎 CCE
容器镜像服务 SWR
应用服务网格 ASM
华为云UCS
云容器实例 CCI
管理与监管
云监控服务 CES
统一身份认证服务 IAM
资源编排服务 RFS
云审计服务 CTS
标签管理服务 TMS
云日志服务 LTS
配置审计 Config
资源访问管理 RAM
消息通知服务 SMN
应用运维管理 AOM
应用性能管理 APM
组织 Organizations
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
应用身份管理服务 OneAccess
数据库
云数据库 RDS
文档数据库服务 DDS
数据管理服务 DAS
数据复制服务 DRS
云数据库 GeminiDB
云数据库 GaussDB
分布式数据库中间件 DDM
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
人脸识别服务 FRS
图引擎服务 GES
图像识别 Image
内容审核 Moderation
文字识别 OCR
AI开发平台ModelArts
图像搜索 ImageSearch
对话机器人服务 CBS
华为HiLens
视频智能分析服务 VIAS
语音交互服务 SIS
应用中间件
分布式缓存服务 DCS
API网关 APIG
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
多活高可用服务 MAS
事件网格 EG
企业协同
华为云会议 Meeting
云通信
消息&短信 MSGSMS
云生态
合作伙伴中心
云商店
开发者工具
SDK开发指南
API签名指南
Terraform
华为云命令行工具服务 KooCLI
其他
产品价格详情
系统权限
管理控制台
客户关联华为云合作伙伴须知
消息中心
公共问题
开发与运维
应用管理与运维平台 ServiceStage
软件开发生产线 CodeArts
需求管理 CodeArts Req
部署 CodeArts Deploy
性能测试 CodeArts PerfTest
编译构建 CodeArts Build
流水线 CodeArts Pipeline
制品仓库 CodeArts Artifact
测试计划 CodeArts TestPlan
代码检查 CodeArts Check
代码托管 CodeArts Repo
云应用引擎 CAE
开天aPaaS
云消息服务 KooMessage
云手机服务 KooPhone
云空间服务 KooDrive
本文导读
文档首页/ 区块链服务 BCS/ 常见问题/ Hyperledger Fabric增强版/ 数据上链/ 区块链实例交易连接失败或连接超时

区块链实例交易连接失败或连接超时

更新时间:2023-03-07 GMT+08:00

问题现象

区块链实例交易连接失败或连接超时。

排查思路

•排查项一:链码首次实例化后发起交易超时。

•排查项二:实例状态异常。

•排查项三:客户端所使用的fabric-SDK与区块链实例版本不匹配。

•排查项四:peer节点账本不同步。

•排查项五:DB文件不存在。

•排查项六:旧版本的CouchDB服务容器重启后,区块链实例不可用。

•排查项七:区块链应用客户端发起上链请求,返回请求超时,但数据可以上链

解决方案

  • 排查项一:链码首次实例化后发起交易超时。

    BCS实例3.0.x版本(对应Fabric v1.4.0内核)在实例化链码时,仅会拉起各组织其中一个Peer对应的链代码容器,而其余Peer的链代码构建和拉起将在该Peer首次进行交易背书时触发。该过程耗时较长,可能出现交易超时的情况:

    图1 交易超时

    如使用Go SDK进行区块链操作,则无需处理该问题,SDK会等待链码容器拉起,不会出现超时情况。

    如使用Java SDK进行交易,为避免该问题,可在应用中使用req.setProposalWaitTime()设置背书超时时间。如下图所示,将背书超时时间设定为60秒,可避免一般链码在这种该情况下的首次交易失败问题。

    图2 交易失败
  • 排查项二:BCS实例状态异常。

    登录BCS控制台,查看BCS实例状态,并根据状态提示进行排查解决。具体参考区块链实例状态为“异常”时,如何排查解决?

  • 排查项三:客户端所使用的fabric-SDK与区块链实例版本不匹配。

    进入BCS控制台,单击“实例管理”,单击交易异常的实例名称,查看版本信息。

    根据“版本信息”显示的Hyperledger Fabric版本,排查客户端所使用的fabric-sdk是否与其一致。如果版本不一致,会导致交易失败、交易超时等情况发生。

    解决方案

    根据实际的Hyperledger Fabric版本,下载对应的fabric-sdk包开发客户端。

    Fabric源码包下载地址:https://github.com/hyperledger/fabric

  • 排查项四:peer节点账本不同步。
    1. 进入BCS控制台,单击“实例管理”,选择交易异常的实例,进入区块链管理页面,并单击“区块浏览器”,选择交易异常的通道,查看“区块列表”中显示的当前通道区块数。
      图3 区块列表
    2. 登录部署BCS区块链的云服务器,并执行docker ps|grep k8s_peer指令查看peer容器,记录交易超时的peer节点容器ID。
      图4 查看peer容器
    3. 执行docker exec -it {容器ID} bash进入容器。
      图5 进入容器
    4. 执行peer channel list查看peer节点加入的通道。
      图6 查看peer节点加入的通道
    5. 执行peer channel getinfo -c {通道名}查看peer节点账本落块情况。
      图7 查看peer节点账本落块情况

      如果peer节点账本落块数与区块链浏览器中查询结果存在差异,且10min后再次查询,该peer节点账本区块数一直未增长,则可能因为资源不足、并发过高导致peer节点落块不同步,造成交易状况异常。

    6. 若还是无法解决,请提工单咨询。在控制台页面右上角,选择“工单 > 新建工单”,进入新建工单页面,按照页面提示选择问题类型创建工单。
  • 排查项五: DB文件不存在。
    1. 登录部署BCS区块链的云服务器,并执行docker ps|grep k8s_peer指令查看peer容器,记录交易状况异常的peer节点容器ID。
      图8 查看peer容器
    2. 执行docker exec -it {容器ID} bash进入容器。
      图9 bash进入容器
    3. 执行cd /var/log/baas-service/peer/进入peer节点日志存储路径,执行ll查看所有文件。
      图10 查看所有文件
    4. 获取Peer节点的哈希值及序号:

      登录区块链管理页面,单击“区块浏览器”,在“Peer节点状态列表”的“Peer节点域名”列查看。

      图11 Peer节点状态列表
    5. Peer节点日志命名规则为peer-{哈希值}-{序号}.trace,执行 cat {文件名}|grep -C 5 "Fail to recover DB: file does not exist"搜索异常信息

      如存在“Fail to recover DB: file does not exist”相关信息,表明peer节点DB文件不存在,会导致交易状况异常。

    6. 若还是无法解决,请提工单咨询。在控制台页面右上角,选择“工单 > 新建工单”,进入新建工单页面,按照页面提示选择问题类型创建工单。
  • 排查项六:旧版本的CouchDB服务容器重启后,区块链实例不可用。

    旧版本的CouchDB服务容器重启后,由于状态数据没有存入网盘中,所以重启后状态数据丢失,CouchDB重新加载区块数据生成状态数据,导致区块链实例在一段时间内不可用。

    十五万的区块数同步数据耗时2小时左右,同步数据期间peer的7051端口不可访问。

    解决方案:

    1. 将区块链实例升级至最新版本,后续再有版本升级或重启操作,将不会发生此类问题。
      说明:

      区块链实例首次升级至最新版本时,由于CouchDB容器挂载网盘并同步状态数据,会导致区块链实例一段时间无法交易,具体时间随账本区块数线性增加,每十五万的区块数同步数据耗时2小时左右,账本区块数可在“区块链管理”>“区块浏览器”页面查看。

    2. 登录区块链服务BCS控制台,在实例卡片中,单击“更多 > 更新版本”。
    3. 在弹出的窗口,可以查看当前实例版本,或者选择最新版本升级区块链实例。
      说明:
      • 更新版本期间会导致实例不可用,如果是联盟链还会影响到其他联盟参与方,请和联盟其他参与方达成共识后再操作,联盟所有成员都需要升级。
      • 请不要在链码安装或实例化时进行升级操作。
      • 支持社区Hyperledger Fabric 1.4到社区Hyperledger Fabric 2.2的跨大版本升级。如果是联盟链,请确保所有联盟成员组件升级到同一版本,否则无法正常交易。
      • BCS版本4.x.x对应社区Hyperledger Fabric 2.2版本。
      • 更新版本只支持低版本到高版本的更新,更新成功后不支持版本回滚,更新失败时才允许执行版本回滚操作。
  • 排查项七:区块链应用客户端发起上链请求,返回请求超时,但数据可以上链。

    若检查发现客户端报错“request timed out or been cancelled”,组织节点日志报错“UTC is more than 15mos apart from current server time”,请确保客户端机器与组织节点机器的时间和时区保持一致。

我们使用cookie来确保您的高速浏览体验。继续浏览本站,即表示您同意我们使用cookie。 详情

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容