24

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

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

4

2 回答 2

28

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

我使用 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 小时免费每日配额,请考虑创建另一个B 类模块。这样,您将获得另外9 个免费实例小时。您可以使用它来运行任何其他作业,例如crontaskbackground。确保/_ah/stop的自动关闭工作正常。不要让长时间空闲的实例被计算在内。
  • 简化您的主页或登录页面以使用最少的实例运行。如果可能,不超过一个实例。只有当您的访问者在您的页面上执行某些操作时,它才会运行更多实例。考虑通过获取blobstore数据存储和数据存储的免费配额来优化您的站点。您还可以使用Google 托管库上的脚本来最小化传出带宽。
  • 每当流量请求发送到模块的处理程序时,它肯定会运行一个实例。因此,除了设置静态缓存到期之外,建议使用 Google Cloud Storage (GCS)客户端库gsutil从您的存储桶提供 html、图像、js 和 css 等静态文件。
    然后将其设置为public-read。使用此方案,您的实例将大大减少,因为它不受请求的影响。您可能会认为GCS 月度定价与按每小时实例成本的总累积所产生的月度账单相比要便宜得多。
    了解如何使用子域将存储桶配置为网站(包括www),如此所述。此外,如果您想使用空白域,您可以通过设置A(主机)和 AAAA 将其重定向到 www,或者如果您的裸域可以直接设置为 Alias/AName,您甚至可以使其完全独立到 GCS (c.storage.googleapis.com)
  • 如果您的应用程序基于数据操作动态运行,您需要知道每种类型的数据库(如MySQL、Cloud Storage 等)也会运行一个实例或操作计数器。确保您阻止任何不需要的机器人流量,而不是为他们提供动态页面。我建议您也考虑使用Datastore Small Operations。与其他数据库操作相比,这种数据操作将免费。当然,您需要优化您的代码才能像Quercus一样使用它。这里有一些很好的讨论,这里这里
于 2014-10-30T13:34:06.880 回答
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
于 2020-12-10T12:31:59.670 回答