几分钟后无法在 Hyperledger Composer-rest-server 上获取数据,超时

cannot take data on Hyperledger Composer-rest-server after a few minutes, timeout

我已经从 Azure Ubuntu 服务器创建了一个 Hyperledger Composer-rest-server。我尝试将其与亚马逊服务器连接,我已成功连接它们。唯一的问题是我无法从亚马逊端安装 composer-rest-server,也无法从亚马逊端安装名片。所以我从 azure 端打开了 composer-rest-server。但是过了一会儿,服务器将不再提供数据。它将给出看起来像

的错误超时

Generated schemas for all types in business network definition
Adding schemas for all types to Loopback ...
Added schemas for all types to Loopback
Web server listening at: http://localhost:3000
Browse your REST API at http://localhost:3000/explorer
Unhandled error for request GET /api/queries/selectCommodities: Error: REQUEST_TIMEOUT
    at Timeout._onTimeout (/home/ptech_root/.nvm/versions/node/v8.14.0/lib/node_modules/composer-rest-server/node_modules/fabric-client/lib/Peer.js:94:20)
    at ontimeout (timers.js:498:11)
    at tryOnTimeout (timers.js:323:5)
    at Timer.listOnTimeout (timers.js:290:5)
Unhandled error for request GET /api/queries/selectCommodities: Error: REQUEST_TIMEOUT
    at Timeout._onTimeout (/home/ptech_root/.nvm/versions/node/v8.14.0/lib/node_modules/composer-rest-server/node_modules/fabric-client/lib/Peer.js:94:20)
    at ontimeout (timers.js:498:11)
    at tryOnTimeout (timers.js:323:5)
    at Timer.listOnTimeout (timers.js:290:5)

在我重启composer-rest-server 之后它又会恢复正常。但这是随机发生的,并且每 5 分钟发生一次。这是什么原因?我该怎么办?我真的是 Hyperledger 的新手,感谢您的帮助。

"grpc" Fabric 使用的底层协议之一发生了一些变化,这可能会导致超时问题。

您可以通过修改用于启动 REST 服务器的卡的 connection.json 来更改 Composer REST 服务器连接到对等点的默认 grpc 选项。

为 connection.json 中的每个对等添加以下设置:

"grpcOptions": {
            "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
        }

最重要的是 "grpc.http2.max_pings_without_data": 0,因此您可以先尝试一下。