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

GAE灵活的环境让您指定您的容器需要的资源。 例如:

resources: cpu: 0.5 memory_gb: 1.3 disk_size_gb: 10 

这将分配具有1.7GB内存的g1-small实例。 但是,如果我将memory_gb提高到1.5 ,GAE现在分配n1-standard-1内存3.75GB的实例。

为什么调度程序似乎将内存过度分配超过10%? 这是否意味着我在g1-small中运行的容器实际上不能安全地使用实例具有的所有1.7GB内存?

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

截至昨天,部署了App Engine灵活环境的Beta版,不再在创build容器实例时指定机器types。 如此资源设置链接中所述,应用程序引擎负责分配具有足够资源的实例,以至less保证您为应用程序指定的CPU和内存量。 因此,您为memory_gbvariables指定的内存量将是可用于容器的内存量。

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

  1. 运行命令:

     gcloud compute instances describe NAME [--zone=ZONE] 
  2. findkey: gae_app_container_memory_mb

    gae_app_container_memory_mb下的值表示可用于容器的最小保证内存量(以MB为单位)。 (请参阅此链接了解更多信息)

关于你以前的观察,观察到的行为将与运行应用程序环境所需的实例开销有关,因此需要比请求更多的内存(即设置更强大的GCE实例types)。

最后要说明的是,App Engine灵活环境的Beta版本不包含任何SLA或弃用策略,实施可能会发生变化,可能会采用后向不兼容的方式。 因此,不推荐用于生产。