You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Cloud Run gRPC存活探针异常问题求助

解决Google Cloud Run gRPC存活探针异常问题

针对你遇到的gRPC存活探针未按预期工作、容器莫名终止的问题,可按以下步骤排查解决:

1. 验证gRPC健康检查服务的标准实现

Cloud Run的gRPC存活探针强制要求服务实现官方标准的grpc.health.v1.Health检查协议,而非自定义gRPC接口。请确认你的代码中已正确集成该服务:

  • 例如Go语言:使用google.golang.org/grpc/health包注册健康服务,并在服务就绪时返回SERVING状态
  • 例如Java语言:使用io.grpc.protobuf.services.HealthStatusManager管理健康状态
    若未实现标准协议,探针会直接判定失败,且不会调用你自定义的端点。

2. 检查探针配置的正确性

  • 端口配置:确保grpc.port的值是容器实际监听的端口(需与服务绑定的$PORT环境变量值一致,不能保留占位符[PORT])
  • YAML缩进:YAML对缩进敏感,livenessProbe下的所有字段需保持统一缩进(建议用2个空格),错误缩进会导致部分参数(如failureThreshold)被忽略,平台自动使用默认值
  • 参数逻辑:Cloud Run中failureThreshold=3表示连续3次探针失败后触发容器重启,若日志仅显示失败1次就终止,大概率是配置未被正确解析(如缩进错误)

3. 排查容器终止的真实原因

容器被终止不一定是探针导致,需查看Cloud Logging的详细日志:

  • 筛选resource.type="cloud_run_revision",查找jsonPayload.reason字段
  • 若终止原因是Scaled down,则是Cloud Run自动扩缩容回收闲置实例的正常行为,与探针无关
  • 若原因是Health check failed,再聚焦探针本身的问题

4. 验证容器内部的gRPC服务可用性

在容器内部执行grpcurl命令测试健康端点:

grpcurl -plaintext localhost:[实际端口] grpc.health.v1.Health/Check

若返回SERVING状态,说明服务本身正常;若返回连接失败,需检查服务是否绑定0.0.0.0(而非仅localhost,否则平台探针无法访问)、端口是否正确监听。

5. 确认探针的实际执行状态

在Cloud Console的Cloud Run服务详情页,查看修订版本的健康检查配置项,确认failureThreshold、periodSeconds等参数已正确应用。若配置未同步,需重新部署服务确保配置生效。

内容的提问来源于stack exchange,提问作者jr1111

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 12:55:13