Silky微服务框架在线文档Silky微服务框架在线文档
首页
文档
配置
源码解析
博文
github
gitee
首页
文档
配置
源码解析
博文
github
gitee
  • 简介

    • silky 框架介绍
  • 入门

    • 名词解释
    • 快速开始
    • 脚手架
    • 微服务模块化架构的最佳实践 & 约定
    • 示例
  • 主机与模块

    • 主机
    • 网关
    • 模块
    • 插件
  • 网关与 HTTP

    • Swagger 文档
    • 性能分析(MiniProfiler)
    • 跨域(CORS)
    • 审计日志
  • 服务与 RPC

    • 应用服务和服务条目
    • rpc通信
    • websocket通信
    •  服务注册中心
    • 服务治理
  • 数据与缓存

    • EFCore 数据访问
    • 缓存
    • 分布式锁
  • 安全与认证

    • 身份认证与授权
    • 分布式事务
  • 基础设施

    • 依赖注入
    • 对象到对象的映射
    • 参数验证
    • 链路跟踪
    • 日志(Serilog)
    • 健康检查
    • 消息总线(MassTransit)
    • 单元测试与集成测试

介绍

MiniProfiler 是一个轻量级的 .NET 性能分析工具,可以在 Swagger UI 页面中嵌入实时的请求耗时分析面板,帮助开发者在开发阶段直观地看到每次请求中各个执行阶段的耗时分布。

silky 框架通过 Silky.Http.MiniProfiler 包集成了 MiniProfiler,并在 RPC 调用、路由查找、远程调用等关键阶段埋点,提供框架级别的细粒度性能数据。

Tips

MiniProfiler 仅建议在开发/测试环境中启用。生产环境建议禁用,避免额外的请求开销和信息泄露风险。


安装

Silky.Http.MiniProfiler 已内置于 Silky.Agent.Host,无需单独安装。若使用自定义主机,手动安装:

PM> Install-Package Silky.Http.MiniProfiler

启用 MiniProfiler

步骤一:注册 MiniProfiler 服务

在 Startup.ConfigureServices 中添加:

public void ConfigureServices(IServiceCollection services)
{
    services
        .AddSilkyHttpCore()
        .AddSwaggerDocuments()
        .AddSilkyMiniProfiler();   // 注册 MiniProfiler 服务
}

AddSilkyMiniProfiler() 内部完成了以下配置:

  • 设置 MiniProfiler 的路由基础路径为 /index-mini-profiler
  • 启用自动颜色方案(Auto),支持深色/浅色主题
  • 启用 Server-Timing 响应头(可在浏览器 DevTools 网络面板中看到耗时信息)
  • 忽略 /lib、/css、/js、/swagger 等静态资源路径

步骤二:添加 MiniProfiler 中间件

在 Startup.Configure 中添加 MiniProfiler 中间件(必须在 UseSwaggerDocuments 附近,且在 UseRouting 之前):

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseSwaggerDocuments();   // 先注册 Swagger
        app.UseMiniProfiler();       // 再注册 MiniProfiler(注入到 Swagger UI)
    }

    app.UseRouting();
    // ...
}

步骤三:Swagger 配置(可选)

MiniProfiler 面板会自动注入到 Swagger UI 页面中。确保 SwaggerDocument 配置正确即可:

SwaggerDocument:
  Title: "My Service API"
  EnableAuthorized: true

MiniProfiler 面板说明

启用后,在 Swagger UI 页面的左上角会出现 MiniProfiler 速度指示器。点击后展开当前请求的完整耗时分析树。

silky 框架在以下执行阶段埋点:

路由阶段(Route)

埋点状态说明
FindServiceEntry根据请求的 WebAPI + HTTP 方法 在服务条目表中查找对应的 ServiceEntry
FindServiceKey查找服务键(ServiceKey),用于选择服务接口的具体实现版本

远程调用阶段(RemoteInvoker)

埋点状态说明
Prepare准备远程调用,序列化请求参数
Success远程调用成功,反序列化结果
Fail远程调用失败(熔断、超时、网络错误等)
End远程调用结束(无论成功失败)

RPC 通信阶段(Rpc)

埋点状态说明
Start开始 RPC 通信
FindServiceRoute在注册中心查找服务路由(目标服务实例列表)
HashKey计算哈希一致性 Key(当负载均衡策略为 HashAlgorithm 时使用)
SelectedServerEndpoint根据负载均衡策略选定目标服务实例
SuccessRPC 调用成功
FailRPC 调用失败(含错误信息,在面板中标红显示)
MarkAddressFail标记目标实例为不健康(触发熔断计数)

Warning

MiniProfiler 仅在来自 Swagger UI 的请求中生效(检测请求头 request-from: swagger)。直接通过接口工具(如 Postman)发起的请求不会触发 MiniProfiler 埋点。


查看 Server-Timing

AddSilkyMiniProfiler() 默认开启了 Server-Timing 响应头。在浏览器的开发者工具(F12)→ Network 面板中,选中任意 API 请求,切换到 Timing 标签页,即可看到服务端各阶段的耗时数据,无需打开 MiniProfiler 面板。


完整配置示例

网关 Startup.cs:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services
            .AddSilkyHttpCore()
            .AddRouting()
            .AddSwaggerDocuments()
            .AddSilkyIdentity()
            .AddSilkyMiniProfiler();   // 启用 MiniProfiler
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseSwaggerDocuments();
            app.UseMiniProfiler();     // 注入 MiniProfiler UI 到 Swagger
        }

        app.UseRouting();
        app.UseSilkyIdentity();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapSilkyRpcServices();
            endpoints.MapSilkyDashboardServices();
        });
    }
}
编辑当前页
Prev
Swagger 文档
Next
跨域(CORS)