谷歌云功能延迟75秒



我有一些代码,使用asyncio/aiohttp调用谷歌云函数。

invoking functions 7098
fetched file_paths 2.9615896589999995 # irrelavant
finished call 0.5879122549999991
finished call 75.623789222

如果我打了40个这样的电话,我也会迟到75个,可能是在打了一半或其他电话之后。函数的执行时间总是在0.3秒左右。

我尝试将自动缩放最小值增加到20,但它不会消失。我可以重新运行它很多次,它总是有一些快速的调用,然后是非常非常长的延迟,这毫无意义。

有人知道这是从哪里来的吗。它不能是冷启动,或者第一次调用也会很慢,或者热功能应该更快地返回。

更新:

async with aiohttp.ClientSession() as session:
async def future(single_input: Dict[str, Any]) -> dict:
start_f = perf_counter()
async with session.request(**map_inputs_to_request_params_fn(single_input)) as response:
result = await response.json(encoding="UTF-8", content_type=None)
if timeit:
stop_f = perf_counter()
print(f"finished call {stop_f - start_f}")
return result
tasks = [future(d) for d in inputs]
responses = await asyncio.gather(*tasks)
return responses

所有代码都在异步函数内部运行,但在等待聚集之后,就不再有等待了。只同步代码直到result = new_loop.run_until_complete(async_exec())

根据我的评论以及其他社区成员的前一条评论发布答案。

问题似乎是系统达到了最大CPU和内存限制。连接了内存大小和CPU。如果你增加记忆力。CPU限制也会增加。您可以通过转到控制台来增加内存->云功能->单击要增加内存的云功能->单击"编辑"->在运行时、构建、连接和安全设置部分,您可以在运行时部分增加内存,也可以使用CLI增加内存。您可以使用以下命令

gcloud functions deploy function_name ... --memory 512MB

您可以查看以下CLI文档。

最新更新