简介
我在我的谷歌云功能中使用Azure Face API(每次调用我的功能时,我会发出大约3或4个https请求(,但我的执行时间非常慢,只有5秒。
函数执行耗时5395毫秒,完成时状态为:"ok">
函数执行耗时3957毫秒,完成时状态为:'ok
函数执行耗时2512毫秒,完成时状态为:"ok ">
基本上我在云功能中所做的是:
1. Detect a face using Azure
2. Save the face in the Azure LargeFaceList
3. Find 20 similar faces using Azure
4. Train the updated Azure LargeFaceList (if it is not being trained already)
我的谷歌云功能位于美国中部1(我的Azure Sace服务位于美国中北部(。我给它分配了2GB的内存和540秒的超时时间。我在欧洲。
问题
正如我之前所说,该函数的执行时间太长(从3.5秒到5秒(。我不知道这是否是因为";冷启动";或者因为运行算法需要一段时间。
Pd:LargeFaceList目前只包含10个人脸(对于1000个人脸,训练持续时间为1秒,对于100万个30分钟(。
我的选项
在上运行代码
1- Google Cloud Function (doing this now)
2- Google Cloud App Engine
在过去的3个月里,我一直在尝试云功能,而且我从未使用过应用程序引擎服务。
我的问题
是否可以在应用程序引擎上使用firestore触发器?如果我把这些代码移到应用程序引擎,我会得到更快的执行时间吗?
使用云函数,您只能在一个函数实例上处理一个请求。如果您有2个请求,Cloud Functions将创建2个实例,并且每个实例仅在一个实例上处理。
因此,如果您有180个并发请求,那么您将在同一时间拥有180个函数实例。(最多1000个实例,默认配额(
Cloud Run运行在与Cloud Functions相同的底层基础设施上,但运行容器。在一个Cloud Run实例上,您可以同时处理多达80个请求。
因此,对于180并发请求,您应该有3或4个实例,而不是云函数的180。由于您支付处理时间(CPU+内存(,180个云功能实例比3个云运行服务更昂贵。
我写了一篇关于这个的文章。
总之,无服务器体系结构具有高度的可扩展性,可以并行处理请求。只考虑一个请求的处理时间,而不是并发请求的最大数量。(所以,从成本角度考虑(