MiniProfiler是一個簡單且高效的小型分析器,可用於.NET,Ruby,Go和Node.js.
MiniProfiler不是將本身附加到每個方法上,由於這樣會有強侵入性並且也不是專一於分析性能問題。git
它是一個ADO.NET的分析器,能夠分析對於ADO.NET(SQL Server、Oracle等)、LINQ-to-SQL、EF(Code First&EF Core)的原始調用(如生成的sql語句)。
可編程式的分析器,經過在想要分析的步驟上加上step。github
MiniProfiler官網:http://miniprofiler.com/
MiniProfiler開源地址:https://github.com/MiniProfiler/dotnetweb
MiniProfiler在.NetCore中使用起來很是的方便,配置簡單,下面咱們就來看一下怎麼配置:sql
一、在web項目中安裝 MiniProfiler.AspNetCore.Mvc 程序包。數據庫
二、在Startup.cs的ConfigureServices中配置MiniProfiler,這裏主要完成MiniProfiler的自定義配置(如路由,若是沒有特殊要求默認便可。)和內部服務在容器中的注入。編程
1 public void ConfigureServices(IServiceCollection services) 2 { 3 services.AddMiniProfiler(); 4 services.AddControllersWithViews(); 5 }
三、在Startup.cs的Configure中配置MiniProfiler,這裏主要啓用MiniProfilerMiddleware對HTTP請求進行監控。app
1 public void Configure(IApplicationBuilder app, IWebHostEnvironment env) 2 { 3 ...... 4 app.UseMiniProfiler(); 5 ...... 6 }
四、在爲數據庫啓用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 }
五、自定義監控,能夠對指定的一段代碼進行性能監控測試
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 }
最後咱們來看一下成果:ui
單機「share」能夠查看詳情
根據監控的數據,咱們就能很好的瞭解整個程序的性能狀況。