Azure Functions Premium 计划在不活动或部署后仍具有冷启动功能

Jon*_*ell 5 azure azure-functions

我使用 Azure CLI 创建了一个带有 HTTP 触发器的简单 Hello World 函数,并将其部署到北欧的 Azure。代码可以在GitHub上看到。我指定了 EP2 SKU(高级计划),其中包含 3 个最低实例和 3 个预热实例。我还创建了一个临时槽,我可以将其部署到生产环境中并将其交换。

# Create a Premium plan with EP2
az functionapp plan create \
  --name $plan \
  --resource-group $resourceGroup \
  --location $location \
  --min-instances 3 \
  --max-burst 5 \
  --sku EP2 

# Create the Function App
az functionapp create \
  --name $functionAppName \
  --storage-account $storageName \
  --plan $plan \
  --resource-group $resourceGroup

# Create a staging slot
az functionapp deployment slot create \
  --name $functionAppName \
  --resource-group $resourceGroup \
  --slot staging

# Configure for 3 pre-warmed instances
az resource update -g $resourceGroup -n $functionAppName/config/web \
  --set properties.preWarmedInstanceCount=3 \
  --resource-type Microsoft.Web/sites
Run Code Online (Sandbox Code Playgroud)

创建资源的完整 CLI 代码可以在GitHub上查看

我仍然遇到冷启动和不可接受的可变响应时间(在 Azure 门户的 HTTP 触发器监视器部分中报告):

  • 热时平均功能响应时间:3-4ms
  • 空闲后:最多一秒
  • 暂存到生产交换时,即使暂存已预热:250-500 毫秒
  • 随机、长达一秒的长响应时间

我的配置有问题吗?对于高级计划中的 Azure Functions,这不是预期的行为。

Hur*_*hen 0

对于这个问题,我在我这边测试了一下,发现和你的结果是一样的。即使我设置了预热实例,当功能空闲时,响应时间也会更长。

但在我的测试中,如果增加预热实例,响应时间将会减少。那么您能否尝试增加预热实例并在空闲后再次请求您的功能?您可以按照以下步骤配置预热实例的数量:

转到您的函数应用,然后单击“平台功能”-->“所有设置”-->“横向扩展(应用服务计划)”

如果没有减少响应时间或者增加预热实例后响应时间仍然不能满足您的要求。我建议您通过以下链接在 Azure 门户上提出支持票证。支持团队可以查看您函数的后端代码并尝试为您提供帮助。