.NetCore学习笔记:五、MiniProfiler监控运行效率
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”可以查看详情
根据监控的数据,我们就能很好的了解整个程序的性能情况。
上一篇: java静态、动态代理实例