gpt4 book ai didi

spring-boot - 什么会导致 Cloud Run 实例在持续加载的情况下无法重复使用?

转载 作者:行者123 更新时间:2023-12-04 03:07:41 25 4
gpt4 key购买 nike

上下文:

当我将最大实例设置为 1 部署时,我的 Spring-Boot 应用程序在 Cloud Run 上按预期运行:它通过推送接收恒定的 pubsub 消息流,并对关联的 CloudSQL 实例进行 0 到 5 次写入,具体取决于消息有效负载。通常它每秒处理 20 到 40 条消息。延迟/响应时间在 50 毫秒和 60 秒之间变化,可能是由于某些资源争用。

为了增加吞吐量/减少资源争用,我希望试验每个应用程序实例的连接池大小,以及我的云运行应用程序的并发和最大实例参数。

据我了解,由于 Spring-Boot,我的应用程序的冷启动时间相对较高,约为 30-40 秒。这对于如何使用该服务是可以接受的。

问题:

我在将 spring-boot 应用程序部署到云运行时遇到问题,其中 max-instances 设置为大于 1 的值:

  • 实例启动,成功处理单个请求,然后不再产生日志。
  • 这种情况每分钟发生几次,让我相信实例启动(冷启动)、处理单个请求、终止,然后重新启动。它们没有像文档中描述的那样被重用,就像我将 max-instances 设置为 1 时那样。Official docs on concurrency
  • 相反,我希望启动 3 个容器实例,然后每个容器实例根据最大并发设置进行请求。

  • max-instances=3 时的可计费容器时间:
    Billable container time graph
  • 如图所示,一旦部署了 max-instances=3 的新版本,实例的数量就会大幅波动。
  • CPU 和内存使用情况的图表也看起来像这样。
  • 没有错误日志。与之前在 max-instaces=1 处一样,有警告表明没有足够的实例可用于处理请求 (HTTP 429)。
  • CloudSQL 实例的连接数未超出
  • 请求的处理速度低于 10/s

  • 最后,这是用于部署的命令:
     gcloud beta run deploy my-service --project=[...] --image=[...] --add-cloudsql-instances=[...] --region=[...] --platform=managed --memory=1Gi --max-instances=3 --concurrency=3 --no-allow-unauthenticated

    什么可能导致这种行为?

    最佳答案

    一个月前,在私有(private) Alpha 中,我进行了测试,并观察到了相同的行为。在与 Google 团队讨论后,我了解到实例过度配置“以防万一”:实例崩溃,实例被抢占,流量突然增加,......

    这样做的代价是您将获得比最大实例值更多的冷启动。 更糟 ,您将为此过度配置的冷启动付费 -> 这不是问题,因为 Cloud Run 有一个巨大的免费套餐可以涵盖此类故障。

    深入了解日志(您可以通过在 BigQuery 中创建一个 Cloud Run 日志接收器,然后通过请求它们来实现),即使实例数超过您的最大实例数,也只有您的最大实例数同时处于事件状态。我不确定。使用您的参数,这意味着,如果您同时启动 5 个实例,则只有 3 个实例在同一时间点为流量提供服务

    这部分没有记录,因为它不断发展以在过度配置和缺乏资源(和 429 错误)之间找到最佳平衡。

    @Steren @AhmetB 你能确认或纠正我吗?

    关于spring-boot - 什么会导致 Cloud Run 实例在持续加载的情况下无法重复使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60065248/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com