Google Cloud 运行 与本地计算机相比非常慢
Google Cloud Run is very slow vs. local machine
我们有一个小脚本可以抓取网页(约 17 个条目),并将它们写入 Firestore 集合。为此,我们在 Google Cloud 运行 上部署了一项服务。
使用 Docker 容器映像,此代码的执行需要大约 5 秒 when tested locally。
将同一图像部署到云端 运行 需要 1 分钟多的时间。
即使是像 "Delete all Documents in a Collection" 这样的简单命令,在本地需要 2-3 秒,部署到云端时需要 10 多秒 运行。
我们知道冷启动,因此我们在随后的第三、第四和第五次 运行 中测试了 Cloud 运行 的性能,但它仍然很慢。
我们也对CPU数、实例数、并发数、内存进行了实验,两端都使用默认值和极值,但是Cloud运行的性能很慢。
这是预期的吗? Cloud 运行 的单个实例真的这么弱吗?我们可以做些什么让它更快吗?
这种缓慢的问题在于,如果我们 运行 我们的代码用于大量条目,Cloud 运行 最终会超时(更不用说 Cloud 运行 的成本了每秒)
发布我自己的问题的答案,因为我们对此进行了大量试验,并在我们自己的实施中发现了问题。
在我们的案例中,性能超低的原因是没有 Promises 或回调的异步调用。
我们最初错过的是这一部分:Avoiding background activities
我们的代码没有等到异步操作结束,马上响应请求。然后异步操作移至后台 activity 并花了很长时间才完成。
回复发布的评论或可能出现的类似问题:
1. 我们没有通过设置具有相同配置的 VM 来尝试在本地进行实验,因为我们更早地找出了原因。
- 我们(还)没有在文件系统上写任何东西,操作只是简单的调用。但这是一个很好的问题,我们会在 store/write 数据
时牢记这一点
我们有一个小脚本可以抓取网页(约 17 个条目),并将它们写入 Firestore 集合。为此,我们在 Google Cloud 运行 上部署了一项服务。
使用 Docker 容器映像,此代码的执行需要大约 5 秒 when tested locally。 将同一图像部署到云端 运行 需要 1 分钟多的时间。
即使是像 "Delete all Documents in a Collection" 这样的简单命令,在本地需要 2-3 秒,部署到云端时需要 10 多秒 运行。
我们知道冷启动,因此我们在随后的第三、第四和第五次 运行 中测试了 Cloud 运行 的性能,但它仍然很慢。
我们也对CPU数、实例数、并发数、内存进行了实验,两端都使用默认值和极值,但是Cloud运行的性能很慢。
这是预期的吗? Cloud 运行 的单个实例真的这么弱吗?我们可以做些什么让它更快吗?
这种缓慢的问题在于,如果我们 运行 我们的代码用于大量条目,Cloud 运行 最终会超时(更不用说 Cloud 运行 的成本了每秒)
发布我自己的问题的答案,因为我们对此进行了大量试验,并在我们自己的实施中发现了问题。
在我们的案例中,性能超低的原因是没有 Promises 或回调的异步调用。
我们最初错过的是这一部分:Avoiding background activities
我们的代码没有等到异步操作结束,马上响应请求。然后异步操作移至后台 activity 并花了很长时间才完成。
回复发布的评论或可能出现的类似问题: 1. 我们没有通过设置具有相同配置的 VM 来尝试在本地进行实验,因为我们更早地找出了原因。
- 我们(还)没有在文件系统上写任何东西,操作只是简单的调用。但这是一个很好的问题,我们会在 store/write 数据 时牢记这一点