如何修复Hyperledger Fabric应用中的"Error:14 UNAVAILABLE: TCP Write failed"错误
解决Hyperledger Fabric应用TCP Write/Read Failed事件监听问题
看起来你的交易其实已经成功上链了,只是前端的事件监听环节出了问题导致没收到反馈。结合你用的Ubuntu 18.04环境,我给你几个针对性的排查方案:
1. 检查Event Hub的端口映射与连接地址
这个报错直接指向eventhub,大概率是应用和Fabric Peer的事件端口连接不畅:
- 打开项目的
docker-compose.yaml文件,找到Peer服务的配置,确认是否有**7053端口(默认事件端口)**的主机映射,比如:
如果没有就加上,然后重启Fabric容器:ports: - "7051:7051" - "7053:7053" # 这个是事件监听端口,必须映射到主机docker-compose down -v && docker-compose up -d - 检查应用的配置文件(比如
config.js),确认Event Hub的连接地址是ws://localhost:7053或者你的主机IP,而不是Docker容器的内部域名(比如peer0.org1.example.com:7053,主机可能无法解析)。
2. 调整Peer的事件监听配置
有时候Peer默认的事件监听设置会导致本地连接不稳定:
- 在
docker-compose.yaml的Peer服务命令里添加以下参数,让Peer监听所有网络地址并允许外部事件连接:command: peer node start environment: - CORE_PEER_EVENTS_ADDRESS=0.0.0.0:7053 - CORE_PEER_GOSSIP_EXTERNALENDPOINT=localhost:7051 - 重启Peer容器后,再测试操作。
3. 开放Ubuntu防火墙端口
Ubuntu 18.04默认的ufw防火墙可能会阻止7053端口的TCP连接:
- 运行命令开放端口:
sudo ufw allow 7053/tcp sudo ufw reload - 也可以暂时关闭防火墙测试:
sudo ufw disable,如果问题消失,说明是防火墙的限制。
4. 调整应用的事件监听超时
应用的事件监听超时设置太短也会导致TCP读写失败:
- 找到应用中创建Event Hub的代码段,调整超时参数,比如把
requestTimeout从默认的30秒改成60秒:const eventHub = new EventHub(); eventHub.setPeerAddr('ws://localhost:7053', { requestTimeout: 60000, sslTargetNameOverride: 'peer0.org1.example.com' }); - 重启应用后测试。
5. 清理Docker缓存并重启所有组件
有时候是Docker容器的网络缓存问题:
- 停止并清理所有Fabric容器和卷:
docker-compose down -v docker system prune -f - 重新启动Fabric网络,再启动应用。
内容的提问来源于stack exchange,提问作者Bagoos
相关产品推荐
相关产品推荐

