MiniProfiler是一個簡單且高效的小型分析器,可用於.NET,Ruby,Go和Node.js.MiniProfiler不是將自己附加到每一個方法上,因為這樣會有強侵入性而且也不是專註於分析性能問題。 它是一個ADO.NET的分析器,可以分析對於ADO.NET(SQL Server、Oracl ...
MiniProfiler是一個簡單且高效的小型分析器,可用於.NET,Ruby,Go和Node.js.
MiniProfiler不是將自己附加到每一個方法上,因為這樣會有強侵入性而且也不是專註於分析性能問題。
它是一個ADO.NET的分析器,可以分析對於ADO.NET(SQL Server、Oracle等)、LINQ-to-SQL、EF(Code First&EF Core)的原始調用(如生成的sql語句)。
可編程式的分析器,通過在想要分析的步驟上加上step。
MiniProfiler官網:http://miniprofiler.com/
MiniProfiler開源地址:https://github.com/MiniProfiler/dotnet
MiniProfiler在.NetCore中使用起來非常的方便,配置簡單,下麵我們就來看一下怎麼配置:
1、在web項目中安裝 MiniProfiler.AspNetCore.Mvc 程式包。
2、在Startup.cs的ConfigureServices中配置MiniProfiler,這裡主要完成MiniProfiler的自定義配置(如路由,如果沒有特殊要求預設即可。)和內部服務在容器中的註入。
1 public void ConfigureServices(IServiceCollection services) 2 { 3 services.AddMiniProfiler(); 4 services.AddControllersWithViews(); 5 }
3、在Startup.cs的Configure中配置MiniProfiler,這裡主要啟用MiniProfilerMiddleware對HTTP請求進行監控。
1 public void Configure(IApplicationBuilder app, IWebHostEnvironment env) 2 { 3 ...... 4 app.UseMiniProfiler(); 5 ...... 6 }
4、在為資料庫啟用MiniProfiler性能監控,將原有的_connection = new MySqlConnection(connectionString);替換成_connection = new ProfiledDbConnection(new MySqlConnection(connectionString), MiniProfiler.Current);就可以了。
1 public UnitOfWork(IConfiguration configuration) 2 { 3 var connectionString = configuration.GetConnectionString("SqlConnection"); 4 _connection = new ProfiledDbConnection(new MySqlConnection(connectionString), MiniProfiler.Current); 5 _connection.Open(); 6 }
5、自定義監控,可以對指定的一段代碼進行性能監控
1 public TestDto Get(string id) 2 { 3 using (MiniProfiler.Current.Step("一個測試")) { 4 var test = _testDomain.Get(id); 5 return test.MapTo<TestDto>(); 6 } 7 }
最後我們來看一下成果:
單機“share”可以查看詳情
根據監控的數據,我們就能很好的瞭解整個程式的性能情況。
源碼地址:https://github.com/letnet/NetCoreDemo