Appengine - 限制实例数

时间:2013-08-07 10:59:36

标签: google-app-engine

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

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

2 个答案:

答案 0 :(得分:18)

我的应用程序目前只有少量流量,因此支付一小笔钱对我来说是个问题。在学习并尝试了如何优化实例类的许多选项之后。我发现以下设置在运行应用程序时为我提供了最低的 billing rates ,并在Google Appengine上启用了结算状态。

我使用F1 Class设置前端实例 这是我在yaml版本中的代码。

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

我使用B1类来设置Backend实例 这是我在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的自动关闭正常工作。不要让长时间闲置的实例计算在内。
  • 使用最少的实例简化您的主页或目标网页。如果可能,不超过一个实例。只有当访问者在您的页面上执行某些操作时,才允许它运行更多实例考虑通过获取 blobstore data storage datastore 的免费配额来优化您的网站。您还可以使用Google Hosted Libraries上的脚本来最小化传出带宽。
  • 每当流量请求转到模块的处理程序时,它肯定会运行一个实例。除了设置static cache expiration之外,建议您使用Google云端存储(GCS)client library {{3}从您的存储区中提供静态文件,如html,images,js和css } 的。
    然后将其设置为gsutil。使用此方案,您的实例将显着减少,因为它不会受到请求的影响。您可能会认为public-read与累计GCS Monthly Pricing累计的每月帐单相比要便宜得多。
    了解如何使用子域(包括 www )将您的存储桶配置为网站,如Hourly Instance Cost所述。此外,如果您想使用空白域,可以通过 here A(主机)和AAAA将其重定向到www,或者您可以如果您的裸域可以直接设置为 set 到GCS (c.storage.googleapis.com),甚至可以完全独立。
  • 如果您的应用程序基于数据操作动态运行,您需要知道每种类型的数据库(如 Alias/AName ,云存储等)也将运行实例或操作计数器。确保您阻止任何不需要的机器人流量,而不是为动态页面提供服务。我建议你也考虑使用MySQL。与其他数据库操作相比,这种数据操作将花费您免费。当然,您需要优化代码才能像"Datastore Small Operations"一样使用它。对它进行了一些很好的讨论Quercusherehere

答案 1 :(得分:0)

我将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