【问题标题】:Google App Engine Instance Hours for every 10min job每 10 分钟作业的 Google App Engine 实例小时数
【发布时间】:2020-06-30 23:40:58
【问题描述】:

我在 App 引擎中有一个脚本,每 10 分钟调用一次。我是唯一的用户。 该脚本从 Web 源中提取数据进行光处理并返回图像。第一次运行需要几分钟。源代码每 10 分钟更新一次,所以下次我的脚本运行时(10 分钟后),它会在几秒钟后返回。

我每天使用超过 30 个实例小时,这超过了 28 个免费小时。

我在某处读到,每次实例启动时,它至少使用 15 分钟。 (所以 144x15=36 小时) 因此,我是否最好尝试让实例保持 24 小时运行(用完 24 小时)并限制为最多一个实例?也许将 idle_timeout 设置为 10 分钟。另一种可能的保存方法是在深夜/清晨以某种方式暂停我的脚本。

【问题讨论】:

    标签: google-app-engine


    【解决方案1】:

    This 是您可能会找到最短 15 分钟声明的地方,它指的是实例小时数的累积结束时间。如果您查看该文档,您会发现它取决于您使用的缩放类型。

    在您提到的关于留在免费层的所有选项中,以下是我的强项:

    • 只使用一个实例。这种方法的问题在于,为单个实例提供更高的负载可能会增加其他成本,例如 vCPU 和内存,因为所有处理都将在那里完成,而且运行脚本可能需要更长的时间。

    • 在低活动时间暂停脚本,如果重新打开时累积的负载不太大,这将是理想的。

    • idle_timeout 设置为 10 分钟。如果它在所有实例上每 10 分钟运行一次,这将不起作用,因为您的应用程序每 10 分钟运行一次,并且应用程序引擎只会在每 15 分钟空闲时停止向您收费,这永远不会发生,除非它不是每个实例每 10 分钟运行一次,如果就是这样,值得一试。

    因此,总结起来,所有 3 个选项都有其优点和缺点,我建议您测试所有选项,看看哪些选项更适合您的需求。

    希望这会有所帮助。

    【讨论】:

    • 谢谢。我发现 idle_timeout 不是一个选项,因为它不适用于自动缩放,这迫使我使用后端实例,这给我的空闲时间要少得多。使用前端实例 (F2),我尝试将 min/max_instances 和 min/max_idle_instances 设置为 1。我仍在对此进行测试。我将研究一种在特定时间段内拒绝请求的方法。这并不理想,但可能是我唯一的选择
    • 太好了,让我知道测试的结果,我还建议您在找到最终解决方案后发布答案,以便社区遇到时可以参考同样的问题,如果您发现我的解决方案对您有任何帮助,请考虑支持它。
    • 所以我实施了一些措施,只在我的笔记本电脑不空闲时每 10 分钟更新一次。这将其减少到大约 70 个请求,平均 3 秒响应时间,大约 21 个前端实例小时。仍然比我想要的高很多。我担心的是,即使请求相隔不到 15 分钟,每个请求似乎都至少花费了我 15 分钟的时间。
    • 这是正常的,因为 15 分钟是您在闲置后停止充电之前的最短时间。
    • 有什么办法解决这个问题吗?有没有办法让实例保持更长时间(即 15 分钟)以便它可以处理其他请求?现在大约 3-4 小时的实际使用是用了超过 20 小时
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 2010-11-17
    • 1970-01-01
    • 2018-02-20
    • 2017-11-30
    相关资源
    最近更新 更多