一, 环境介绍
二, 监控 ASP.NET 页面
三, 监控执行的 sql 语句
一, 环境介绍
系统: win7
IDE:Visual studio 2017
数据库: MySQL 5.1
框架: https://asp.net/ core mvc+dapper
二, 监控 ASP.NET http://xn--asp-646fy95f.net/ 页面
1. 新建 ASP.NET http://1.xn--asp-e82f890a.net/ Core web Application, 如图:
2. 从 nuget 下载 MiniProfiler.AspNetCore.Mvc 包, 如图:
3. 在 Startup.cs 中 ConfigureServices 方法添加如下代码:
- services.AddMiniProfiler();
- 1
4. 在 Startup.cs 中 Configure 方法添加如下代码:
- App.UseMiniProfiler();
- 1
5. 修改_ViewImports.cshtml
- @using StackExchange.Profiling
- @addTagHelper *, MiniProfiler.AspNetCore.Mvc
- 1
- 2
6. 修改_Layout.cshtml(Shared/_Layout.cshtml)
- <mini-profiler />
- 1
运行项目, 查看执行效果如下:
三, 监控执行的 sql 语句
1. 从 nuget 下载 MiniProfiler.AspNetCore 包, 如图:
2. 修改创建数据库连接代码, 如下:
- _conn = new ProfiledDbConnection(new MySqlConnection(connectionString), MiniProfiler.Current);
- 1
运行项目, 查看执行效果如图:
可以看出查询使用 647.7ms, 占用页面加载时间的 43.5%, 点击蓝色的 647.7 可以看到执行的详情, 如下图:
这样我们就可以监控页面加载所执行的所有 sql 语句.
在实际项目中情况会比较复杂, 比如: 一个页面会同时存在几个或者几十个 sql 的执行, 怎么做才能清晰展示 sql 执行的情况呢? 我们可以使用 MiniProfiler 的 Step 方法进行分类统计. 修改代码如下:
- public IActionResult Index()
- {
- var dbSettings = _dbSettings;
- var dbInstance = DapperFactory.GetInstance(dbSettings);
- var dapper = dbInstance.GetDapper();
- var profiler = MiniProfiler.Current;
- using (profiler.Step("查看 setting 表数据"))
- {
- var query = dapper.GetList<Setting>("select * from setting");
- }
- using (profiler.Step("查看 log 表数据"))
- {
- var query = dapper.GetList<Log>("select * from log");
- }
- return View();
- }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
查看执行情况如图:
ps:
miniprofiler 官网文档地址: https://miniprofiler.com/dotnet/
来源: http://www.bubuko.com/infodetail-3340773.html