Cloudrun 并发

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

如何在 Google Cloud Run 上高效且经济高效地同时运行大量 Python 模拟(例如,100 个模拟,每个模拟在 8 个 CPU、4GB RAM 上运行约 2 分钟),从而最大限度地减少资源消耗并最大限度地提高吞吐量? 实现并发的有效方法是什么,下面是我当前的配置,我尝试增加内存和CPU大小,但仍然看不到cloudrun上发生的并发运行,并且我的应用程序可以处理使用ProcessPoolExecutor()实现的并发运行。 检查我看到的指标,在给定时间发生 1 或 2 次运行 指标 设置

python google-cloud-platform concurrency google-cloud-run
1个回答
0
投票

你的问题很难回答,我会用一些假设来向你展示这个困难。

最简单的情况是,您的模拟占用 100% 的 CPU 时间 2 分钟。在这种情况下,如果您同时运行 2 个模拟,最多需要 4 分钟。 (充其量是因为我没有计算CPU中的抢占时间和上下文切换)

在这种情况下,您将支付相同数量的 CPU。最好的方法是将并发度设置为 1,并且每个实例进行 1 次模拟。


可以省钱的情况是,如果您在 CPU 不执行任何操作时使用它,例如,进程等待 API 应答。在这种情况下,您可以同时运行不同的模拟,用另一个模拟的有用处理时间来填充未使用的 CPU 时间。

但是,即使在完全可预测的环境中,弄清楚这种情况也极其复杂(因为您无法管理 CPU 抢占时序和其他类似的东西)。


所以,没有好的答案。对我来说,最好的办法是在不同的实例上并行运行所有这些(并发度为 1)。它不是最便宜的,但它将是最快和最简单的。因此,您将节省时间和金钱(通过避免优化、测试、各种运行配置、在这里写问题……),并且因为时间就是金钱,所以您最终会节省金钱!

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