云运行Qs :: max-instances + concurrency + threads (gunicorn thread)

问题描述 投票:-1回答:1

(我在学习云跑承认这与开发或代码无关,但希望有GCP工程师能说明一下)

我有一个PY应用程序正在运行--gunicorn + Flask......目前只是PoC,这就是为什么要进行最小化配置。

cloud run deploy 有以下标志。

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

guniccorn_cfg.py files有以下配置。

workers=1
worker_class="gthread"
threads=3

我想知道:

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

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

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

附加信息:-这是一个IO密集型的应用(不是CPU密集型)。只需抓取HTTP请求并发布到pubsubsub即可。

多谢

python-3.x google-cloud-platform gunicorn google-cloud-run
1个回答
1
投票

首先,在Stackoverflow上问 "鸡尾酒问题 "是不合适的,你一次问5个问题。以后请限制在一次问1个问题。

  1. 你不应该担心容器在哪里运行(物理机、虚拟机......)。--max-instances 限制你允许你的应用扩展的 "容器实例数量"。这是为了防止如果有人恶意向你的应用发送过多的请求,最终导致巨额账单。

  2. 这在 https:/cloud.google.comrundocsabout-currency。. 如果您指定 --concurrency=10,你的容器最多可以路由一次有10个飞行中的请求。所以要确保你的应用可以同时处理10个请求。

  3. 是的,请阅读Gunicorn文档。测试你的 "本地 "设置是否能让Gunicorn同时处理5个请求... ... Cloud Run's --concurrency 设置是为了保证你在任何时刻对1个容器实例的请求不会超过5个。

我也建议你在问之前更深入地阅读 officail docs,或许还可以阅读一下 the 云运行-常见问题 一次,这几乎回答了所有这些问题。

© www.soinside.com 2019 - 2024. All rights reserved.