本文主要采用的是ABP.Next框架的模块化的开发方式, 进行集成MiniProfile并测试。
MiniProfiler官网: https://miniprofiler.com/dotnet/
简要说明
MiniProfiler是用于对应用程序进行性能分析的库和UI。通过让您看到花费的时间,运行哪些查询以及要添加的其他自定义时间,MiniProfiler可以帮助您调试问题并优化性能。
MiniProfiler监控的信息可以存放内容, 也可以存放内存、MongoDb、MySql、SqlServer、Redis、PostgreSql等等很多存储介质。支持对EF、EFCore、NHibernate等等ORM, 可以监控所执行的SQL, 和执行时长,便于对SQL进行优化。
以下MiniProfiler只是简单的集成,若需要更多的要求,可以查看官网。
安装和集成
1. 先安装Nuget包:
// 主要是用于监控WebApi
Install-Package MiniProfiler.AspNetCore.Mvc
// 用于监控EntityFrameworkCore
Install-Package MiniProfiler.EntityFrameworkCore
2. 增加AbpModule文件, 内容如下:
public class MiniProfilerModule:AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
var services = context.Services;
services.AddMiniProfiler(options =>
{
options.RouteBasePath = "/profiler";
(options.Storage as MemoryCacheStorage).CacheDuration = TimeSpan.FromMinutes(60);
options.SqlFormatter = new StackExchange.Profiling.SqlFormatters.InlineFormatter();
options.TrackConnectionOpenClose = true;
options.ColorScheme = StackExchange.Profiling.ColorScheme.Auto;
options.EnableMvcFilterProfiling = true;
options.EnableMvcViewProfiling = true;
}).AddEntityFramework(); // AddEntityFramework是要监控EntityFrameworkCore生成的SQL
}
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
var app = context.GetApplicationBuilder();
app.UseMiniProfiler();
}
}
3. 在WebApi中的Module增加依赖
[DependsOn(typeof(MiniProfilerModule))]
public class PdmHostModule : AbpModule
以上步骤已将MiniProfiler集成到项目中
测试查看
1. 打开看板, http://{DomainName}/profiler/results-index, 如: http://localhost:5000/profiler/results-index, 看板如下图:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLwkDOzQTNyMjMwETOwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2. 打开Name下面的蓝色文字链接, 如Bank/AddBank, 可以查看整个请求的生命周期的耗时, 如下图: