我为 Web API 项目安装的 ASP.NET Core HealthCheck 中间件在运行 HTTP 请求时会导致任何性能问题吗?
我的问题:
因为
HealthCheck()
是在启动时添加的,它会调用HTTP管道期间发出的每个请求吗?
中间件
HealthCheck()
会导致性能问题吗?
示例代码
public void ConfigureServices(IServiceCollection services)
{
//...
// Registers required services for health checks
services.AddHealthChecks()
// Add a health check for a SQL Server database
.AddCheck(
"OrderingDB-check",
new SqlConnectionHealthCheck(Configuration["ConnectionString"]),
HealthStatus.Unhealthy,
new string[] { "orderingdb" });
}
首先,您分享的代码只是注册健康检查服务。
基本配置注册运行状况检查服务并调用运行状况检查中间件以在 URL 端点上响应运行状况响应。
所以如果想使用这项服务,您需要像下面这样注册:
app.MapHealthChecks("/healthz");
这意味着它只会在您访问
/healthz
url 时运行,并直接从健康检查中间件返回响应。
中间件HealthCheck()会导致性能问题吗?
由于它只是在访问 url 时运行,如果您注册了健康检查来运行需要很长时间才能完成的大型数据库查询,则可能会导致性能问题。
另外,你经常调用这个url,也会像正常请求一样造成性能问题。