【问题标题】:Appengine - Limit the number of instancesAppengine - 限制实例数量
【发布时间】:2013-08-08 17:26:22
【问题描述】:

无论如何,确实应该有一个选项来限制特定数量的实例。 在应用程序设置菜单中,您所能做的就是限制 IDLE 实例的最大数量,我不确定它是否按预期工作。我的意思是我将 Max Idle Instances 设置为 1 并将 Min Pending Latency 设置为 15 秒,但我仍然看到 2 个实例偶尔运行,长时间没有请求.他们不应该在闲置 15 分钟后关闭吗?考虑到没有请求达到 15 秒的延迟,为什么它甚至会触发具有这些设置的秒实例?

我运行一个简单的“我的 IP 是什么”python 应用程序,它确实不需要高性能。我的意思是,如果响应在 100 毫秒或 5 秒之后确实没有什么区别,重要的是只有一个实例在运行,这样每天 28 个实例小时就不会用完。

【问题讨论】:

  • 您是否尝试过使用新的模块配置:developers.google.com/appengine/docs/python/modules/#config
  • 不,我没有,但我会试一试。谢谢!
  • "实例类 F1 只允许使用 '自动' 缩放值。"笨蛋,您只能使用后端进行手动扩展,限制为 8 小时。 :|
  • 啊,好吧,我也使用自动扩展最大空闲 1 分钟等待 15 秒,有时会生成 2 个实例一段时间,但从未超过免费配额,但几乎总是活动流量。 24小时

标签: google-app-engine


【解决方案1】:

我的应用目前只有很少的流量,所以即使支付一点美元对我来说也是一个问题。在学习并尝试了很多关于如何优化实例类的选项之后。在 Google Appengine 上启用计费状态的运行应用程序时,我发现以下设置为我提供了最低 billing rates

我使用 F1 Class 来设置 Frontend 实例。
这是yaml版本的代码。

instance_class: F1
automatic_scaling:
  max_idle_instances: 1  # default value
  min_pending_latency: automatic  # default value
  max_pending_latency: 30ms

我使用 B1 类来设置后端实例。
这是yaml版本的代码。

instance_class: B1
basic_scaling:
  max_instances: 1
  idle_timeout: 10m

这是放入appeengine.web.xml的代码(如果用maven编译java)

<threadsafe>true</threadsafe>
<instance-class>B1</instance-class>
<basic-scaling>
<max-instances>1</max-instances>
<idle-timeout>10m</idle-timeout>
</basic-scaling>

通常我运行 4 个模块,F1 类中的 2 个模块和 B1 类中的 2 个模块。他们每天花费我0。然而,当我的网站因流量繁忙而变得繁忙时,我将课程提升到 F2 和 B2,每天的总费用不到 0.50 美元。

以下是一些减少计费实例的提示:

  • 如果您的 F 类模块运行的次数超过 28 hours free daily quota,请考虑使用 Class B 创建另一个模块。通过这个你得到另一个9 free instance hours。您可以使用它来运行任何其他作业,例如 crontaskbackground。确保/_ah/stop 的自动关闭工作正常。不要让长时间空闲的实例被忽略。
  • 简化您的主页或登录页面以使用最少的实例运行。如果可能,不超过一个实例。只有当您的访问者在您的页面上执行某些操作时,它才会运行更多实例。考虑利用 blobstoredata storagedatastore 的免费配额来优化您的网站。您也可以使用Google Hosted Libraries 上的脚本来最小化传出带宽。
  • 每当流量请求发送到模块的处理程序时,它肯定会运行一个实例。因此,除了设置 static cache expiration 之外,建议使用 Google Cloud Storage (GCS) client librarygsutil 从您的存储桶中提供 html、图像、js 和 css 等静态文件。
    然后将其设置为public-read。使用此方案,您的实例将大大减少,因为它不受请求的影响。您可能会认为GCS Monthly PricingHourly Instance Cost 的总累积所产生的每月账单相比要便宜得多。
    了解如何使用 子域(包括 www)将您的存储桶配置为网站,如 here 所述。此外,如果您想使用 空白域,您可以通过 set A(主机)和 AAAA 将其重定向到 www,或者您甚至可以如果您的裸域可以直接设置为 Alias/AName 到 GCS (c.storage.googleapis.com),则它完全独立。
  • 如果您的应用程序基于数据操作动态运行,您需要注意每种类型的数据库,如 MySQL、云存储等也将运行实例或操作计数器。确保您阻止任何不需要的机器人流量,而不是为他们提供动态页面。我建议您也考虑使用"Datastore Small Operations"。与其他数据库操作相比,这种数据操作将免费。当然,您需要优化您的代码才能像Quercus 一样使用它。对此有一些很好的讨论hereherehere

【讨论】:

  • 您上一条中描述的方法违反了使用协议的条款。 cloud.google.com/terms/?csw=1:“限制。客户不得...创建多个应用程序、帐户或项目来模拟或充当单个应用程序、帐户或项目(分别)或以其他方式访问服务以避免产生费用"
  • 注明。我已经完全取出了最后一颗子弹。感谢您指出条款。
  • 救了我的命,兄弟
【解决方案2】:

我将我的 yaml automatic_scale 块更改为此,现在我总是最多只有一个实例在运行。使用此配置,您永远不会超过免费配额。

automatic_scaling:
  min_idle_instances: automatic
  max_idle_instances: 1
  min_pending_latency: automatic
  max_pending_latency: 0.030s
  max_instances: 1

【讨论】:

    猜你喜欢
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    相关资源
    最近更新 更多