我们有一个小脚本,它可以抓取一个网页(~17个条目),并将它们写到Firestore集合中。为此,我们在Google上部署了一个服务。
使用Docker执行此代码需要花费5秒的在本地测试时时间。当部署到云运行时,相同的映像需要超过1分钟。
即使是简单的命令“删除集合中的所有文档”(在本地需要2-3秒),在云运行上部署也需要超过10秒。
我们知道冷启动,所以我们在第三、第四和第五次后续运行中测试了云运行的性能,但速度仍然很慢。
我们还试验了CPU、实例、并发性、内存的数量,同时使用了默认值和两端的极值,但是Cloud的性能很慢。
这是意料之中吗?云的单个实例真的运行得这么弱吗?我们能做点什么让它更快吗?
这种缓慢的问题是,如果我们为大量条目运行代码,云运行最终会超时(更不用说每秒运行云的成本了)。
发布于 2020-04-11 19:07:15
当我们对此进行了大量的实验,并在我们自己的实现中发现了问题时,我会在自己的问题上发布答案。
在我们的例子中,超慢性能的原因是异步调用没有承诺或回调。
我们最初忽略的是这一节:避免背景活动
我们的代码没有等待异步操作结束,并立即响应请求。异步操作随后转移到后台活动,并花费了很长时间才完成。
针对发布的评论或可能出现的类似问题: 1.我们没有尝试通过设置具有相同配置的VM来尝试本地操作,因为我们更早地找到了原因。
https://stackoverflow.com/questions/61154349
复制相似问题