来自 GCP 的 Nestjs gRPC RESOURCE_EXHAUSTED

问题描述 投票:0回答:1

我在 Google Cloud Run 上部署了一个 NestJS GraphQL 项目。除了 GraphQL 功能之外,我还直接调用 gRPC 微服务(在 GraphQL 之外),并且它在我的本地计算机上完美运行。但是,当我将项目部署到 Cloud Run 并尝试相同的操作时,遇到错误。即使我发送的 JSON 负载非常小,问题仍然存在。对于可能导致此问题的原因有什么见解吗?

@Injectable()
export class AdsStatisticsService implements OnModuleInit {
  adsStatService: StatService;
  constructor(@Inject('ADS_STATISTICS') private client: ClientGrpc) {}
  onModuleInit() {
    this.adsStatService = this.client.getService<StatService>('StatService');
  }
  insertAdsStat(request: InputInsert): Observable<string> {
    return this.adsStatService.insertAdsStat(request);
  }
}
// inside of request
request = {advertisementId:1, views:100, date:1734337800000}

这样的错误:

8 RESOURCE_EXHAUSTED: Received message larger than max (1013478509 vs 209715200)

实现如下:(.proto 名称不同,但内容相同) enter image description here

我尝试了nestjs允许的所有grpc数据发送格式,但没有成功。我错过了什么或做错了什么?

我增加了机器的规格。

nestjs grpc gcloud google-cloud-run
1个回答
0
投票

此问题的根本原因是不同的 HTTP 错误,该错误被 RESOURCE_EXHAUSTED 错误掩盖。

这是此错误的结果:gRPC 库将 HTTP 错误响应解析为长度分隔的消息,并且解析得到的长度大于配置的最大值(本例中的默认值)。

© www.soinside.com 2019 - 2024. All rights reserved.