欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.NetCore学习笔记:五、MiniProfiler监控运行效率

程序员文章站 2022-05-15 18:52:13
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 程序包。

.NetCore学习笔记:五、MiniProfiler监控运行效率

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 }

最后我们来看一下成果:

.NetCore学习笔记:五、MiniProfiler监控运行效率

 

 单机“share”可以查看详情

.NetCore学习笔记:五、MiniProfiler监控运行效率

 

 根据监控的数据,我们就能很好的了解整个程序的性能情况。

 

源码地址:https://github.com/letnet/netcoredemo