【问题标题】:Basic scaling instances of GAE don't shutdown even when idle-timeout is far exceeded即使远远超过空闲超时,GAE 的基本扩展实例也不会关闭
【发布时间】:2018-09-23 13:45:10
【问题描述】:

我已经在 Google App Engine Standard(Java,虽然这不应该有任何区别)上配置了我的默认服务版本,以使用基本缩放并运行单个 B2 实例:

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <application>${app.id}</application>
    <version>tasks</version>
    <threadsafe>true</threadsafe>
    <runtime>java8</runtime>
    <module>default</module>
    <instance-class>B2</instance-class>

    <basic-scaling>
        <idle-timeout>60s</idle-timeout>
        <max-instances>1</max-instances>
    </basic-scaling>

    <!-- Other stuff -->
</appengine-web-app>

尽管近 28 分钟没有收到任何请求,但实例并没有自行关闭(我使用 appcfg.cmd stop_module_version... 手动关闭它):

没有后台线程。

为什么这个实例没有关闭?两天前,实例运行了几乎一整天,处于闲置状态,采用这种配置...那有什么问题?

idle的定义是在x的时间内没有收到新的请求。如果最后一个请求需要 20 分钟才能执行怎么办? idle不应该定义为自上次请求完成以来的时间吗?

我在 SeverFault 上发布了这个问题(因为这不是编程问题),但被告知 StackOverflow 会是更好的网站...

【问题讨论】:

    标签: google-app-engine scaling shutdown autoscaling


    【解决方案1】:

    此处支持 GCP:

    我尝试重现相同的行为,但使用 1m 或 60s,实例将在服务其最后一个请求后关闭。

    尽管如此,当我有任何长时间持续的请求、线程和/或任务队列运行几分钟时,实例不会在此请求完成之前关闭。您还可以找到此信息 here 用于手动/基本缩放:

    请求最多可以运行 24 小时。手动缩放的实例可以 选择处理 /_ah/start 并执行许多程序或脚本 小时而不返回 HTTP 响应代码。任务队列任务可以 最长可运行 24 小时。

    在您的情况下,似乎有一个请求在完成之前持续了几分钟,因此,该实例一直处于活动状态(而不是空闲),直到您手动停止它。您可能会发现这个Instance life cycle 文档也很有用。

    如果您认为这种行为不是您当时所经历的,我建议您创建一个private issue tracker,以便我们进一步调查。确保在其中提供项目编号和所有必需的详细信息(新鲜样品)。创建后,分享问题跟踪器编号,以便我们进行调查。

    【讨论】:

    • 感谢您的帮助。我会再试一次,如果我能重现问题,我会创建一个私人问题跟踪器
    猜你喜欢
    • 2014-04-24
    • 2014-03-24
    • 2017-01-21
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多