首页 > 解决方案 > Azure 函数主机阈值超过线程数

问题描述

我在一个消费计划上运行了多个 Azure 功能。我还设置了 API 管理。在 Api Management 内部,我们有 2 个 Web 测试,每 3-5 分钟对这些函数进行一次测试,并确保它们仍然可用且可访问。Web 测试命中的端点只有以下代码。

[FunctionName("HealthCheck")]
    public static Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "healthcheck")]HttpRequestMessage req, TraceWriter log)
    {
        log.Info("Health Check Triggered");
        return Task.FromResult(req.CreateResponse(HttpStatusCode.OK));
    }

运行一段时间后,该函数开始出现 503 并出现 Host Threshold Exceeded [Threads] 错误。我无法弄清楚是什么导致了这个问题。由于该功能在消费计划而不是应用服务计划上,Azure 是否有任何限制阻止它工作?提前感谢您提供任何信息。

标签: azureazure-functionsazure-api-management

解决方案


Host Health Monitor功能目前仅在存在这些沙盒限制的Consumption plan 上处于活动状态。该功能默认启用,但可以通过healthMonitor部分禁用/配置host.json,例如

{
    "healthMonitor": {
        "enabled": true,
        "healthCheckInterval": "00:00:10",
        "healthCheckWindow": "00:02:00",
        "healthCheckThreshold": 6,
        "counterThreshold": 0.80
    }
}

如果您的函数应用程序达到阈值,您将看到诸如Host thresholds exceeded: [Threads] 被记录之类的错误。线程:线程数(限制为 512)。

更多细节,你可以参考这篇文章


推荐阅读