我用F4机器在标准上部署了一个Django应用程序。API正在做一些机器学习,处理的时间在本地大约是4s ( 3.5到4s之间)。对于我的用例,也可以在部署的应用程序上延迟4-5。然而,当我多次测试部署的应用程序执行相同的请求时,我看到第一个请求需要3-4秒,但是经过10-15次迭代,它们大约需要8s。
下面是我用来测试我的应用程序的代码:
session = requests.Session()
all_times = []
for i in range(50):
try:
t0 = time.time()
resp = session.post(url_api, headers=headers, json=data)
t1 = time.time()
print(t1 - t0)
all_times.append(t1 - t0)
except Exception as e:
print("Err", e)请求持续时间的结果如下:

我想知道为什么在15次请求之后会有这样的差距,为什么有些分数远高于平均7-8秒(例如10秒)。
查看Google控制台中的延迟时,我得到了相同的模式:

我试过的
我试图更改自动标度参数,认为这可能是由于实例的创建。但是,当我在app.yaml中将实例数量限制为1时,我得到了相同的模式
automatic_scaling:
max_instances: 1我还试图:
requests中的会话避免在每次迭代时创建新会话。我的目标是最小化可变性,并将请求持续时间保持在5s以下。
更新
下面是来自Cloud的跟踪列表的一个示例,它显示了相同的模式:


我比较了与大延迟相关的跟踪和低延迟的跟踪,但是没有发现任何重要的区别。
更新2
由于Priyashree的回答,将min_idle_instances设置为1以避免机器重新启动解决了以下问题:

发布于 2022-02-10 14:35:36
当比较Google平台和本地平台的性能时,您应该记住,在GCP上部署需要更多的时间来导入所有必要的库并设置Django框架。
一般来说,将本地计算机上的性能与GCE上的性能进行比较没有多大意义,因为本地机器可能运行的是不同的操作系统。但是是的,我同意GAE在10-15请求之后所提供的请求之间的延迟差异是不可接受的,也是相当奇怪的。
检查以下内容:
此外,按照文档 (如果instance_class设置为F2或更高),可以通过将请求设置为高于默认值10的值来优化实例。要确定最优值,请逐步增加它并监视应用程序的性能。
通过PageSpeed Insight,它分析网页的内容,然后生成建议,使该页面更快,并可能是方便的。我还建议您联系Google支持1:1的交互,因为这个案例/问题是特定于环境的。
https://stackoverflow.com/questions/71032636
复制相似问题