Cloud Run随机重启问题



我正在GCP上构建一个监视应用程序。目前我有3个微服务,用Spring Boot构建。对于监视部分,我有一个调度器微服务,它基于来自请求的项创建一个动态的cron表达式,并在控制器上公开。它需要是动态的,因为它监视足球比赛。所有的微服务目前都部署并运行在GCP Cloud Run上。特别是对于Scheduler应用程序,我使用此配置,因为应用程序必须始终处于活动状态并运行,否则将丢失调度。

gcloud run deploy <service-name> --image=<image> --no-cpu-throttling --min-instances 1 --max-instances 1

我面临的问题是这样的。尽管实例(min和max)设置为1,cpu设置为no- throrolling,应用程序仍然随机重新启动。Cloud Run Restart

我也试着查看指标,但是没有什么问题,容器实例,在20:54(应用程序重新启动的时间)是1。实例指标

有人遇到过这个问题吗?如果有,你是怎么解决的?

Cloud Run min实例旨在减少冷启动,而不是保持服务全天候运行。

从docs

如果您的服务需要减少延迟,并且您希望限制冷启动的数量,您可以通过指定要保持温暖并准备为请求服务的容器实例的最小数量来更改此默认行为。

使用最小实例期望服务总是启动而没有任何中断是一个糟糕的假设,因为这不是它的目的。您应该期望不时地重新启动。

您可以添加更多实例,使服务"始终处于启动状态"。如果实例被重新启动,但不保证不会有任何重新启动。

那么这不是一个问题,而是按预期工作。

根据您的用例,最好的方法是使用触发服务的队列(如Pub/Sub或Cloud Tasks)。这样可以降低成本,因为CR只在需要时才工作,而不会浪费CPU时间。

相关内容

  • 没有找到相关文章

最新更新