You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core应用连接池超时排查:性能监视器SqlServer数据提供器计数器无实例

解决Windows性能监视器中.NET Data Provider for SqlServer计数器无实例的问题

以下是针对Windows Server 2016 + ASP.NET Core场景的排查和解决步骤:

  • 重新注册SQL Server数据提供器计数器
    以管理员身份打开命令提示符,执行以下命令重新注册相关性能计数器:

    lodctr /R:sqlctr.ini
    

    若sqlctr.ini不在默认路径(C:\Windows\System32),需指定完整路径(通常位于SQL Server安装目录的Tools\Binn下)。

  • 确认应用使用的SqlClient库及对应计数器分类
    ASP.NET Core应用现在多使用Microsoft.Data.SqlClient而非旧版System.Data.SqlClient,前者对应的性能计数器分类为Microsoft.Data.SqlClient而非.NET Data Provider for SqlServer。检查项目依赖后,尝试在性能监视器中查找对应分类的计数器。

  • 启用性能计数器服务
    打开services.msc,确保以下服务处于运行状态:

    • Performance Counter DLL Host Service(PerfHost)
    • Performance Logs & Alerts(SysmonLog)
      若未运行,启动服务并设置为自动启动。
  • 显式启用.NET Core应用的SqlClient性能计数器
    在应用的Program.cs中添加代码,强制启用性能计数器:

    var builder = WebApplication.CreateBuilder(args);
    // 启用Microsoft.Data.SqlClient性能计数器
    AppContext.SetSwitch("Microsoft.Data.SqlClient.EnablePerformanceCounters", true);
    // 后续配置代码...
    var app = builder.Build();
    

    重启应用后,再次尝试添加计数器。

  • 检查运行权限
    右键性能监视器,选择「以管理员身份运行」后再尝试添加计数器,避免因权限不足无法读取实例信息。

  • 重建系统性能计数器库
    若以上步骤无效,尝试重建整个性能计数器体系:

    1. 管理员命令提示符执行lodctr /R,重置所有系统性能计数器
    2. 执行winmgmt /resyncperf,同步WMI与性能计数器数据
    3. 重启服务器后再次验证
  • 排查AWS EC2环境特殊性
    检查EC2实例是否有自定义的组策略或AWS Systems Manager配置禁用了性能计数器;确认实例未被限制性能监控相关的系统调用。

内容的提问来源于stack exchange,提问作者user75893

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 08:56:23