Google App Engine 灵活环境中可用的内存

Google App Engine 灵活环境中可用的内存

GAE 灵活环境允许您指定容器所需的资源。例如:

resources:
  cpu: 0.5
  memory_gb: 1.3
  disk_size_gb: 10

这将为g1-small实例分配 1.7GB 内存。但是,如果我将 提高memory_gb1.5,GAE 现在将为n1-standard-1实例分配 3.75GB 内存。

为什么调度程序似乎分配了超过 10% 的内存?这是否意味着我运行的容器实际上g1-small无法安全地使用实例拥有的全部 1.7GB 内存?

(潜在的问题是:给定一个实例的内存大小,并在 GAE 灵活环境下运行,我应该设置什么node--max-old-space-size确保我的进程不会崩溃?但给出上述问题的答案,我大概可以解决这个问题。)

答案1

从昨天开始,App Engine 灵活环境的新 Beta 版本已部署,不再在创建容器实例时指定机器类型。如本资源设置中所述关联,应用引擎负责分配具有足够资源的实例,以至少保证您的应用具有指定的 CPU 和内存量。因此,您为变量指定的内存量memory_gb将是您的容器可用的内存量。

或者,在配置您的 App Engine 应用程序并将其部署到云端后,您可以执行以下步骤来检索应用程序可用的内存量:

  1. 运行命令:

    gcloud compute instances describe NAME [--zone=ZONE]
    
  2. 定位key: gae_app_container_memory_mb

    下面的值gae_app_container_memory_mb代表您的容器可用的保证最小内存量(以 MB 为单位)。(请参阅此关联了解更多信息)

关于您之前的观察,观察到的行为与运行应用程序环境所需的实例开销有关,因此作为预防措施,恰好需要比请求的更多的内存(即设置更强大的 GCE 实例类型)。

最后需要注意的是,App Engine 灵活环境的 Beta 版不受任何 SLA 或弃用政策的约束,并且实现方式可能会发生变化,可能以向后不兼容的方式发生变化。因此,不建议将其用于生产。

相关内容