我用 python 开发了一种算法,并使用 docker 镜像将其部署在 GCP Cloud RUN 上。附加的 alognwith 是相同的 dockerfile。
# Command to run the application
CMD ["gunicorn", "-b", "0.0.0.0:8080", "main:app", "--workers", "4", "--timeout", "600", "--preload"]
问题是,当我在 GCR 上触发代码时,它运行不均匀...它返回 504 错误 另外,cloud RUN 配置有 4 个 CPU 和 16 GB 内存。我已将 GCR 上的最大实例设置为 5 ,将每个实例的最大并发请求设置为 10 。 Gunicorn 命令应该是什么样子?
默认情况下,Cloud Run 请求最多可以运行 5 分钟(300 秒)。如果您的工作线程花费的时间超过此时间,Cloud Run 将使用 SIGKILL 终止它。
如何增加超时: 您可以使用 GCP Console 或命令行配置服务的超时。最大超时为 60 分钟(3600 秒)。
设置超时的命令(最长 60 分钟):
gcloud run services update <SERVICE_NAME> --timeout=<TIME_IN_SECONDS>
例如,将超时设置为 10 分钟(600 秒):
gcloud run services update <SERVICE_NAME> --timeout=600
如果您的 Cloud Run 容器被 SIGKILL 终止,则它可能会耗尽内存。 Cloud Run 使用资源限制,当您的容器超过内存限制时,它就会被终止。
如何增加记忆力: Cloud Run 允许您为每个容器分配最多 32 GB 的内存。您可以增加内存限制以防止 OOM 问题。
gcloud run services update <SERVICE_NAME> --memory=<MEMORY_LIMIT>
例如,将内存限制设置为 2 GB:
gcloud run services update <SERVICE_NAME> --memory=2Gi