0

对所有函数都是 HTTP 触发器的 Azure 函数应用程序使用 Python 3.8。我们启用了 HTTP 2 ...

在此处输入图像描述

下面是我们的 host.json 文件

{
  "version": "2.0",
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[1.*, 2.0.0)"
  }
}

我们同时从客户端(Angular 9)应用程序向服务器发送 30 个请求(15 个是 OPTIONS 请求,另外 15 个是 GET),并注意到其中 20 个处理得相对较快,但其余的需要明显处理时间更长。以下是并排的两个请求

在此处输入图像描述 在此处输入图像描述

对于更长的请求,我已经通过 curl 和 Postman 验证了它们单独返回的时间要快得多,这让我相信服务器上有一些并发设置我可以调整,但我不知道在哪里。

编辑:这里有更多信息。我的匿名函数开始如下...

def main(req: func.HttpRequest) -> func.HttpResponse:
    """."""
    logging.info("received request")

但请注意该函数响应缓慢时 Azure 日志中报告的时间......

2020-11-17 14:29:24.094 Executing 'Functions.download-image' (Reason='This function was programmatically called via the host APIs.', Id=xxx-xxx)
Information
2020-11-17 14:29:32.143 received request 

在我被告知函数被调用和函数的第一个日志语句之间有 8 秒的延迟。下面是我的“Scale Out”的样子......

在此处输入图像描述

4

1 回答 1

0

对于这个问题,您可以检查您的函数应用的横向扩展选项卡是否。 在此处输入图像描述

您可以手动扩展实例,也可以根据需要定义自定义自动扩展。

正如您提到的,前 20 个请求的处理速度相对较快,所以我猜您选择P1应用服务计划(如下图所示),因为P1计划最多有 20 个实例。如果您当前的应用服务计划最多只有 20 个实例,您需要将您的计划扩展到更高的定价层。 在此处输入图像描述

顺便说一句,如果您希望快速处理请求,最好在您的第一个屏幕截图中启用“始终开启”。否则,如果您的函数应用很长时间没有收到请求,它将处于空闲状态。

于 2020-11-17T01:47:28.187 回答