ASP.NET Core HealthCheck中间件是否影响Web API性能及是否每次请求都执行?
ASP.NET Core HealthCheck 中间件常见问题解答
问题1:由于在启动时添加了HealthCheck(),它是否会在HTTP请求管道处理每个请求时都被调用?
不会。HealthCheck 中间件仅会在请求特定健康检查端点(默认路径为/health,支持自定义配置)时,才会执行注册的健康检查逻辑。普通的API业务请求不会触发健康检查,它不会对所有请求进行拦截处理。
问题2:HealthCheck()中间件是否会引发性能问题?
正常使用场景下不会造成明显的性能损耗,但需要关注以下几点来避免潜在问题:
- 健康检查的性能开销取决于你添加的检查类型:比如你示例中的SQL Server连接检查,每次触发时会尝试建立数据库连接验证状态,若该端点被频繁调用,可能会给数据库带来微小的额外压力。
- 建议通过配置定时自动检查(例如结合
AddHealthChecksUI设置定时任务),而非让外部服务频繁请求健康检查端点,减少不必要的资源消耗。 - 可为单个健康检查设置超时时间,避免某个耗时较长的检查拖慢整个健康响应的返回速度。
示例代码
public void ConfigureServices(IServiceCollection services) { //... // 注册健康检查所需服务 services.AddHealthChecks() // 添加SQL Server数据库健康检查 .AddCheck( "OrderingDB-check", new SqlConnectionHealthCheck(Configuration["ConnectionString"]), HealthStatus.Unhealthy, new string[] { "orderingdb" }); }
内容的提问来源于stack exchange,提问作者Ramakrishna.p
相关产品推荐
相关产品推荐

