Node.js对另一个微服务的GRPC调用抛出“CANCELLED:呼叫已取消”错误

rn0zuynd  于 2023-06-29  发布在  Node.js
关注(0)|答案(1)|浏览(253)

我们正在使用Node.js、Docker Swarm和GRPC来部署多个微服务。我们的一个微服务是一个GRPC服务,它为我们的前端处理websockets。但是,当我们从另一个微服务(我们的后端服务)对此服务进行GRPC调用时,我们会收到一个错误,显示“已取消:随机取消呼叫。我们已尝试调试此问题,但无法找到根本原因。
以下是我们设置的一些细节:

  • 我们使用Docker Swarm来管理我们的微服务。
  • 我们有每个服务的一个副本,我们之前有多个副本,但我们减少了它,希望解决这个问题。
  • 我们的前端使用套接字与服务通信。
  • 我们从另一个微服务调用GRPC,该微服务也在Docker Swarm上运行。

我们使用4 vCpu和16gb ram的GCP VM,并在其上部署docker swarm。
我们在调试这个随机发生的问题时遇到了麻烦,希望得到任何帮助。
以下是我们已经尝试过的:

  • 我们检查了GRPC服务的日志,但找不到任何相关的错误消息。
  • 我们尝试部署GRPC服务的多个副本,但这也无济于事。
zujrkrfu

zujrkrfu1#

“Call cancelled”错误表示客户端收到了该请求的取消。如果调用了forceShutdown方法,Node.js gRPC服务器可以在活动请求上发送取消。否则,很有可能取消来自您正在使用的负载均衡器,该负载均衡器用于跨服务的副本分发请求/连接。

相关问题