azure - 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 是否有任何限制阻止它工作?提前感谢您提供任何信息。
解决方案
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)。
更多细节,你可以参考这篇文章。
推荐阅读
- python - 如何使用 python 显示 bash 命令的键值对输出
- javascript - 使用 Webpack 预编译 React
- javascript - 如何让 iOS 上的 Chrome 浏览器打开地图链接?
- r - 我的组件功能比给定的数据短得多
- javascript - 我应该将 Firebase 代码添加到哪个 appDelegate 文件?
- c# - 有没有办法在 for 循环中使用子字符串?
- java - 如何在 IntelliJ 中使用 Java 11 编译目标 Java 1.8
- sql - 如何在同一个表中查询
- regex - 更新正则表达式以排除点后跟除空格以外的任何内容
- macos - 如何从 finder 的“更多信息”中提取信息?