当前位置: 首页 > 知识库问答 >
问题:

当网络空闲15-20分钟后调用sendTransaction时会失败

沈飞翔
2023-03-14

我在GCP中部署了一个超分类器结构网络。我使用fabric节点sdk与网络通信。

当sdk和网络之间没有activity时,如果我试图调用链码,则API调用在sendTransaction到Orderer时失败,并带有以下日志

错误:[Orderer.js]:SendBroadcast-on错误:“错误:14不可用:TCP读取失败\n在createStatusError(/usr/src/app/node_modules/grpc/src/client.js:64:15)\n在ClientDuplexStream._emitStatusIfdone(/usr/src/app/node_modules/grpc/src/client.js:270:19)\n在ClientDuplexStream._receivestatus(/usr/src/app/node_modules/fabric-client/lib/orderer.js:136:21)在emitOne(events.js:116:13)在clientduplexstream.emit(events.js:211:7)在clientduplexstream._emitstatusifdone(/usr/src/app/node_modules/grpc/src/client.js:271:12)在clientduplexstream._receivestatus((/usr/src/app/node_modules/fabric-client/lib/orderer.js:136:21)在emitOne(events.js:116:13)在clientduplexstream.emit(events.js:211:7)在clientduplexstream._emitstatusifdone(/usr/src/app/node_modules/grpc/src/client.js:271:12)在clientduplexstream._receivestatus(

看来SDK无法到达订购者。立即的下一个调用请求成功。在空闲时间为15分钟后,每次都会发生这种情况。

我尝试为连接设置grpc超时,但似乎没有帮助。

共有1个答案

能可人
2023-03-14

很可能是GCP断开了空闲连接。您需要为您的客户端设置gRPC keepalive选项。类似于:

    "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 
    }

请参阅https://fabric-sdk-node.github.io/release-1.4/tutorial-grpc-settings.html了解使用节点SDK设置这些内容的详细信息

 类似资料:
  • 问题内容: 我最近一直在使用来处理带注释的Websocket,并与之聊天。 但是我遇到了一个问题,5分钟后(我相信这是默认计时器),该会话关闭(这不是由于错误)。我找到的唯一解决方案是在关闭事件发生时通知我的套接字,然后在新的套接字中重新打开连接。 但是我已经阅读了stackOverflow,通过在WebsocketPolicy 中进行设置,我可以避免出现此问题: 我尝试设置为例如,但是行为完全没

  • 提示 视频 PPT 下载 背景介绍 NTP 网络时间协议(Network Time Protocol),是用来同步网络中各个计算机时间的协议。 本教程介绍了如何开启 NTP 软件包(一个运行在 RT_Thread 上的 NTP 客户端),并且当连接上网络后,如何利用这个软件包,获取当前的 UTC 时间,并更新至 RTC(实时时钟)中。 获取示例代码 打开 Env 工具输入 menuconfig 按

  • 我在我的公司网络上建立Docker图像时遇到了问题。我刚刚开始使用Docker,所以我有以下用于hello-world类型应用程序的Dockerfile: 当我在家里的笔记本电脑上,在我自己的无线网络上构建它时,这很好用。它拉下必要的依赖关系,并正确地构建映像。 我没有网络技术来弄清楚这里发生了什么。有人知道为什么在构建Docker容器时会出现这种奇怪的行为吗?

  • 1⃣️一分钟自我介绍,hr说到时间会打断 我是第一个讲,然后一听后面的同学讲完,简直是各路神仙打架本科、研究生都有:两个港中深、两个港科大(其中一个全额奖学金)、墨大、悉大、伯明翰等等 2⃣️无领导小组(40分钟讨论+5分钟pre) 不能透题,反正就是跟用户运营相关的。讨论过程大家都很peace,有几个同学我非常欣赏,他们的主要角色就是主动担起记录者、点子输出、cue时间的角色。 [吧唧R]复盘:

  • 我试图创建一个简单的查询,以从索引日志存储中的文档返回匹配的deploymentId。 我能够搜索匹配查询,但当添加时间范围得到以下豁免。 错误: “type”:“parsing\u exception”, “reason”:“[匹配]格式错误的查询,应为[END\u OBJECT],但找到了[FIELD\u NAME]”, 我只想要匹配部署ID的最后15分钟记录。

  • 问题内容: 我有一张看起来像这样的桌子 我基本上将某些记录的创建时间存储在表中。我知道是否要对在15分钟间隔内创建的记录进行计数,我将使用类似的方法 那给我这样的东西 我如何理解第一列?如果我想给我看类似的东西 我了解通过一些操作,我可以在下午2:15出现1434187。甚至那可能是一个好的开始。。。然后我可以用一些逻辑来说明整个时期。谢谢! 问题答案: 一种方法是只使用和以使所有内容都在一个范围