.NetCore學習筆記:5、MiniProfiler監控運行效率

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」能夠查看詳情

 

 根據監控的數據,咱們就能很好的瞭解整個程序的性能狀況。

 

源碼地址:https://github.com/letnet/NetCoreDemo

相關文章
相關標籤/搜索