【问题标题】:Cloud Run Qs :: max-instances + concurrency + threads (gunicorn thread)Cloud Run Qs :: max-instances + concurrency + threads(gunicorn thread)
【发布时间】:2020-08-09 14:26:33
【问题描述】:

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

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

cloud run deploy 具有以下标志:

--max-instances 1
--concurrency 5
--memory 128Mi
--platform managed

guniccorn_cfg.py文件有如下配置:

workers=1
worker_class="gthread"
threads=3

我想知道:

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

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

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

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

非常感谢

【问题讨论】:

    标签: python-3.x google-cloud-platform gunicorn google-cloud-run


    【解决方案1】:

    首先,在 Stackoverflow 上一次问 5 件事是不合适的。以后请每次限制为 1 个问题。

    1. 您不必担心容器运行的位置(物理机、VM 等)。 --max-instances 限制您允许应用扩展的“容器实例数”。这是为了防止在有人恶意向您的应用发送过多请求时产生巨额账单。

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

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

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

    【讨论】:

    • 感谢您的建议。我查看了这些链接,但无法得到满意的答案(对不起,我应该早点提到)。实际上,您现在很少向我澄清您的 cmets a) 差异。在--max-instances--concurrency.. 和b) --concurrency 与Gunicorn thread 参数之间的关系。谢谢回答。
    猜你喜欢
    • 2020-03-12
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 2022-01-12
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    相关资源
    最近更新 更多