我已将节点应用托管在Cloud Run中,并且所有请求都在300-600毫秒内得到了响应。但是一个端点从第三方服务获取数据,因此请求需要1.2s-2.5s的时间来完成请求。
我对此有疑问
也请参见屏幕截图,我在日志中收到了一条消息和请求“该请求导致启动了一个新的容器实例,因此比典型的请求可能花费更长的时间并使用更多的CPU”
任何建议都将不胜感激。
谢谢。
答案 0 :(得分:4)
除非您担心CPU /内存时间的开销,否则我认为这不会成为问题,老实说,这仅在您每天收到10k +请求时才重要。因此,可能没关系,云运行可以很好地处理(我自己的应用程序确实比没有问题的请求时间更长)
您的服务可能被“缩放为零”,这意味着没有容器在运行以服务请求。在这种情况下,有必要启动一个新实例并等待与该过程相关的任何初始化/启动成本。由于所有其他实例均处于其请求限制之内,因此也有可能自动缩放。确保为每个实例设置的最大并发请求数设置为大于1-Node / Express可以一次处理多个请求。另外,您只需要为总花费的时间付费,而不是为每个请求付费:
在进行非常长时间(30秒,几分钟以上)的操作的情况下,最好切换到其他数据传输方法。您可以使用轮询,在该轮询中,客户端每5秒钟发出一次请求,并检查响应是否准备就绪。您还可以切换到诸如WebSockets之类的基于推送的系统,但是Cloud Run不对此提供支持。
TL; DR更长的请求(大约10-30秒)应该没问题,除非您担心增加计算时间可能会成比例地增加成本。