Cloud Run Qs :: 最大实例数 + 并发数 + 线程(gunicorn 线程)

Vib*_*ain 4 python-3.x gunicorn google-cloud-platform google-cloud-run

(我正在学习 Cloud Run,承认这与开发或代码无关,但希望一些 GCP 工程师能够澄清这一点)

我有一个正在运行的 PY 应用程序 - Gunicorn + Flask...现在只是 PoC,这就是为什么需要最小配置。

cloud run deploy有以下标志:

--max-instances 1
--concurrency 5
--memory 128Mi
--platform managed
Run Code Online (Sandbox Code Playgroud)

guniccorn_cfg.py文件具有以下配置:

workers=1
worker_class="gthread"
threads=3
Run Code Online (Sandbox Code Playgroud)

我想知道:

1) max-instances:: 如果我要对此进行调整,这是否意味着在需要时会配置新的物理服务器计算机?或者,该服务是否通过拉取容器映像并简单地docker run ...在同一物理服务器计算机上启动一个新的容器实例()来实现这一点,从而有效地与其他容器实例共享同一物理计算机?

2) concurrency:: 一个正在运行的容器实例是否收到多个并发请求(例如,由 3 个正在运行的容器实例处理 5 个并发请求)?或者每个并发请求都会触发启动新的容器实例(docker run ...

3)最后,通过调整gunicorn设置我可以有效地达到concurrency> 5吗?thread对于前。在这种情况下 5x3=15.. 例如。15 个并发请求由 3 个正在运行的容器实例提供服务,例如?如果这是真的,调整thread与调整云运行有什么优点/缺点concurrency

附加信息: - 这是一个 IO 密集型应用程序(不是 CPU 密集型)。只需抓取 HTTP 请求并发布到 pubsub/sub

多谢

Ahm*_*gle 5

首先,在 Stackoverflow 上一次问 5 件事的“鸡尾酒问题”是不合适的。今后请限制每次提问 1 个。

\n\n
    \n
  1. 您不必担心容器在哪里运行(物理机、虚拟机……)。--max-instances限制您允许应用程序扩展的“容器实例数量”。这是为了防止如果有人恶意向您的应用程序发送过多请求,最终会产生巨额账单。

  2. \n
  3. 这记录在https://cloud.google.com/run/docs/about-concurrency。如果您指定--concurrency=10,您的容器可以被路由为一次最多有 10 个正在进行的请求。因此,请确保您的应用程序可以一次处理 10 个请求。

  4. \n
  5. 是的,请阅读 Gunicorn 文档。测试您的“本地”设置是否允许 Gunicorn 同时处理 5 个请求... Cloud Run\xe2\x80\x99s--concurrency设置是为了确保您在任何时刻都不会收到超过 5 个对 1 个容器实例的请求。

  6. \n
\n\n

我还建议您在询问之前更彻底地阅读官方文档,也许还可以阅读一下cloud-run-faq,它几乎回答了所有这些问题。

\n