【问题标题】:Higher than expected number of GAE instances高于预期的 GAE 实例数
【发布时间】:2021-10-31 14:44:05
【问题描述】:

我在 Google App Engine 上为我的网站应用程序(静态托管在其他地方)运行 nodejs 后端。我的 QPS 非常低:

但是,我的实例数量经常超过 1 到 2,有时甚至高达 3 或 4。这超出了免费配额,我开始不得不付费。

我的成本每月低于 0.1 美元,但现在经常高于 8 美元,这是一个令人担忧的趋势。我的用户群或他们的模式并没有真正发生显着变化来解释这一点(并且如前所述,QPS 是低恕我直言)。

我注意到内存使用率相对较高,我想知道是否应该调查我的应用中潜在的内存泄漏。

有关该应用程序的更多背景信息:它主要处理身份验证以及获取数据并将数据存储到 MongoDB Atlas 中。

【问题讨论】:

  • 您是否也注意到 MongoDb 节点上的任何模式变化?

标签: google-app-engine


【解决方案1】:

我会采用两步流程

  1. 首先在app.yaml 文件中将maximum_instances 设置为1。这意味着您的服务器只会启动 1 个实例。这带来的风险是,如果您的流量激增,对某些人来说可能会很慢。

app.yaml

automatic_scaling:
  max_instances: 1
  1. 然后调查您的代码中是否存在内存泄漏,并了解如何优化您的代码。如果您发现问题并加以解决,您可以删除 max_instance 或提高该值。

【讨论】:

  • 感谢您的建议,我会从那里开始
【解决方案2】:

从您分享的屏幕截图中,我可以看到您的实例数量随着内存使用量的增加而增加,并以同样的方式减少。因此,我建议增加分配给每个实例的内存量,以使用更少的实例来为您的应用程序提供服务。正如this guide 建议开始测试您的应用程序:

从较低的机器(1 个核心 CPU 和 1 GB RAM)开始,并增加 App Engine 应生成的最小实例数

另外,指南说:

由于 App Engine 会按每小时使用的内核数和 RAM 数向您收费,因此在较低机器上使用以前的设置可以节省多达 40% 的成本

因此,最好为实例分配更多内存以避免过多的成本。

App Engine pricing 页面中,它说:

内存资源的计费包括您的应用使用的内存以及运行时本身运行您的应用所需的内存。这意味着您的内存使用量和成本可能高于maximum memory you request for your app

在您的app.yaml配置文件中,您可以设置参数memory_gb默认设置为0.6 GB。

为您的应用程序请求的内存,其中不包括某些进程开销所需的 ~0.4 GB 内存。每个 CPU 内核需要 0.9 到 6.5 GB 的总内存。 要计算请求的内存: 'memory_gb = cpu * [0.9 - 6.5] - 0.4'

此外,您应该检查您的代码中的memory leaks,以避免您的应用程序消耗比预期更多的内存。

最后,您可以使用pricing calculator 根据您对应用程序所做的调整来估算您的应用程序的成本。

【讨论】:

    猜你喜欢
    • 2014-09-12
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 2023-03-28
    • 2016-03-13
    • 1970-01-01
    相关资源
    最近更新 更多