【发布时间】:2020-07-24 00:46:28
【问题描述】:
我们有一个小脚本可以抓取网页(约 17 个条目),并将它们写入 Firestore 集合。为此,我们在 Google Cloud Run 上部署了一项服务。
使用 Docker 容器映像,此代码的执行需要大约 5 秒 when tested locally。 将同一映像部署到 Cloud Run 时需要 1 多分钟。
即使是“删除集合中的所有文档”这样简单的命令(在本地需要 2-3 秒),在 Cloud Run 上部署时也需要超过 10 秒。
我们知道冷启动,因此我们在后续的第三、第四和第五次运行中测试了 Cloud Run 的性能,但仍然很慢。
我们还对 CPU 的数量、实例、并发、内存进行了实验,在两端都使用默认值和极值,但 Cloud Run 的性能很慢。
这是预期的吗? Cloud Run 的个别实例真的这么弱吗?我们可以做点什么让它更快吗?
这种缓慢的问题在于,如果我们为大量条目运行代码,Cloud Run 最终会超时(更不用说 Cloud Run 每秒的成本)
【问题讨论】:
-
你本地环境的CPU数量是多少?它的速度是 Mhz 吗?您能否尝试创建一个 VM(n1-standard1)并在其上运行您的脚本,以比较它是 Cloud Run 环境(及其 GVisor 沙箱)是否会减慢您的处理速度,或者仅仅是 CPU 的 nb。另一种方式,您的堆栈驱动程序日志中是否有 GVisor 警告?
-
除上述之外,能否也澄清一下,如果你在文件系统上写了很多东西? Cloud Run 的文件系统比本地机器慢。
-
感谢 cmets。我们找到了原因,这是我们自己的实现最终转移到了 Cloud Run 文档不推荐的后台调用。
标签: google-cloud-run