应用引擎无法部署具有大数据框的应用

app engine fails to deploy app with large dataframe

所以我在一个小型 pandas 数据框上使用机器学习构建了一个应用程序,约 1000 条记录。我使用 gcloud app deploy,它托管在 appspot 上,我可以使用它。

我将数据帧增加到约 30,000 条记录,但该应用程序仍在我的本地运行。当我使用 gcloud app deploy 时,出现 500 服务器错误。我正在从项目根目录中的 csv 加载数据框。

我的 app.yaml 看起来像:

runtime: python37
service: snow
instance_class: F4_1G  

从另一个 Whosebug post,我将 instance_class 切换为 F4_1G 但它仍然出现相同的错误。我也试过

gcloud config set app/cloud_build_timeout 1000  

对于可能导致应用引擎出现此错误的原因,还有其他想法吗?

错误:

"exceeded soft memory limit of 2048 mb, consider increasing in app yaml file"

说明你的实例class已经运行内存不足,理论上可以通过指定另一个实例class来增加内存,但是你已经在使用那个了内存最多(2048mb)。查看 instance classes.

的列表

所以在您的情况下,解决方案是更改为 App Engine Flex,为此您需要在 app.yaml[=31 上指定类似的内容=]:

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app

runtime_config:
  python_version: 3

manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 2.1 
  disk_size_gb: 10

memory_gb 上指定 vm 实例将使用的内存,这里是知道要设置哪个值的公式:

memory_gb = cpu * [0.9 - 6.5] - 0.4

您在区间[0.9 - 6.5]中选择所需的内存,乘以CPU数量减去0.4。如需更详细的解释,请查看 app.yaml reference documentation

此外,请查看 App Engine Pricing documentation 以了解您的计费将如何从标准更改为灵活。