petapoco 使用 MiniProfiler Glimpse监控
来源:互联网 发布:java给图片加水印 编辑:程序博客网 时间:2024/06/09 22:14
PetaPoco是一款适用于.Net(window) 和Mono( linux )的微小、快速、单文件的微型ORM。
MVC MiniProfiler是Stack Overflow团队设计的一款对ASP.NET MVC的性能分析的小程序,适用于.Net(window) 和Mono( linux )。可以对一个页面本身,及该页面通过直接引用、Ajax、Iframe形式访问的其它页面进行监控,监控内容包括数据库内容,并可以显示数据库访问的SQL(支持EF、EF CodeFirst等 )。并且以很友好的方式展现在页面上。
该Profiler的一个特别有用的功能是它与数据库框架的集成。除了.NET原生的 DbConnection类,profiler还内置了对实体框架(Entity Framework)以及LINQ to SQL的支持。任何执行的Step都会包括当时查询的次数和所花费的时间。为了检测常见的错误,如N+1反模式,profiler将检测仅有参数值存在差 异的多个查询。
MiniProfiler是以Apache License V2.0协议发布的,你可以在NuGet找到。
1.安装MiniProfiler
Install-Package MiniProfiler
Install-Package MiniProfiler.MVC4
2.在Global.asax加入MiniProfiler相关的监控代码using StackExchange.Profiling;
protected void Application_BeginRequest(){ if (Request.IsLocal) { MiniProfiler.Start(); }} protected void Application_EndRequest(){ MiniProfiler.Stop();}
3.修改_Layout.cshtml视图文件
在Views\Shared\_Layout.cshtml文件的body前面加上一段代码,让监控展示在页面上。
增加
@StackExchange.Profiling.MiniProfiler.RenderIncludes()
如图
4.在Web.config加入代码
<system.webServer> <handlers> <add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" /> </handlers> </system.webServer>
4.查看运行结果
运行程序,查看页面如下图:
已经可以看到页面生成所需要的时间,此时还没监控到sql的运行情况
5.给内部函数增加监控
var profiler = MiniProfiler.Current; using (profiler.Step("获取UserInfo")) { tmp = _userService.GetUserInfo(1); tmp.username = "王五"; }
6.给petapoco增加监控,新增 DatabaseWithMVCMiniProfiler.cs
using System;using System.Data;using System.Data.Common;using StackExchange.Profiling;namespace SL.ORM.PetaPoco{ public class DatabaseWithMiniProfiler : Database { public DatabaseWithMiniProfiler(IDbConnection connection) : base(connection) { } public DatabaseWithMiniProfiler(string connectionStringName) : base(connectionStringName) { } public DatabaseWithMiniProfiler(string connectionString, string providerName) : base(connectionString, providerName) { } public DatabaseWithMiniProfiler(string connectionString, DbProviderFactory dbProviderFactory) : base(connectionString, dbProviderFactory) { }
public override IDbConnection OnConnectionOpened(IDbConnection connection)//重点 { // wrap the connection with a profiling connection that tracks timings return new StackExchange.Profiling.Data.ProfiledDbConnection((DbConnection)connection, MiniProfiler.Current); } }}
7.生成和返回Database
public Database AccountDbContext { get { //return new Database(connectionName); return new DatabaseWithMiniProfiler(connectionName);//使用MiniProfiler监控性能 } set { this.AccountDbContext = value; } }
8.再次运行可以看到有了sql的监控
其他 监控软件参考资料
There are a few ways to debug/profile NPoco. They are listed below, and are commonly done by inheriting from Database and overriding a specific method. Note: Make sure you instantiate your new class (MyDb
as below) when creating a Database from then on.
NanoProfiler是一个EF Learning Labs出品的免费性能监控类库(即将开源)。它的思想和使用方式类似于MiniProfiler的。
是国人设计,并开源.
http://www.cnblogs.com/teddyma/p/NanoProfiler_Introduction.html
public class MyDb : Database { public MyDb(string connectionStringName) : base(connectionStringName) { } public override IDbConnection OnConnectionOpened(IDbConnection conn) { var dbprofiler=new DbProfiler(profilingSession.Current.Profiler); return new ProfiledDbConnection(conn,dbprofiler); }}
miniprofiler
http://miniprofiler.com/
public class MyDb : Database { public MyDb(string connectionStringName) : base(connectionStringName) { } public override IDbConnection OnConnectionOpened(IDbConnection conn) { return new ProfiledDbConnection((DbConnection)conn, MiniProfiler.Current); }}
Manual
public class MyDb : Database { public MyDb(string connectionStringName) : base(connectionStringName) { } public override void OnExecutingCommand(IDbCommand cmd) { File.WriteAllText("log.txt", FormatCommand(cmd)); }}
Glimpse
http://getglimpse.com/
Glimpse will usually hook itself up by installing the following packages.
Install-Package Glimpse.ADOInstall-Package Glimpse.Mvc4 (or your mvc version)
Show last SQL executed on the ASP.NET error page
Credit: Sam Saffron
public class MyDb : Database { public MyDb(string connectionStringName) : base(connectionStringName) { } public override void OnException(Exception e) { base.OnException(e); e.Data["LastSQL"] = this.LastSQL; }}
void Application_Error(object sender, EventArgs e){ var lastError = Server.GetLastError(); string sql = null; try { sql = lastError.Data["LastSQL"] as string; } catch { // skip it } if (sql == null) return; var ex = new HttpUnhandledException("An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.", lastError); Server.ClearError(); var html = ex.GetHtmlErrorMessage(); html = html.Insert(html.IndexOf("<b>Stack Trace:</b>"), @" <b>Last Sql:</b><br><br> <table width='100%' bgcolor='#ffffccc'> <tbody> <tr> <td><code><pre>" + sql + @"</pre></code></td> </tr> </tbody> </table><br>"); Response.Write(html); Response.StatusCode = 500; Response.End();}
- petapoco 使用 MiniProfiler Glimpse监控
- Glimpse
- MiniProfiler监控EF与.NET MVC项目
- PetaPoco Sql 语法及使用
- PetaPoco的使用Demo手册
- MiniProfiler 网站性能测试工具使用
- MiniProfiler在.Net MVC中使用
- asp.net mvc ef 性能监控调试工具 MiniProfiler
- 采用MiniProfiler监控EF与.NET MVC项目
- 灵活使用Linux下的glimpse工具和tee命令
- 调试时使用的工具:Glimpse插件和MvcMiniProfiler插件
- 使用MiniProfiler调试ASP.NET MVC网站性能
- 使用MiniProfiler调试ASP.NET MVC网站性能
- 使用MiniProfiler调试ASP.NET MVC网站性能
- [Asp.net mvc] 在Asp.net mvc 中使用MiniProfiler
- 使用 C# + SQLite + PetaPoco + django 快速打造桌面程序
- Centos 6.4 Mono下使用Petapoco与Oracle数据库
- PetaPoco入门
- HyperPacer 中的项目管理设计
- [Redis] redis-cli 命令总结
- 怎么修改PDF中的文字大小
- vim插件安装神器vundle
- 计算机网络自顶向下方法之一一一第一章 之二
- petapoco 使用 MiniProfiler Glimpse监控
- 通过GridView实现一个自定义的一个日历控件
- 关于AJAX传参中文乱码问题
- 使用JS写当前系统时间,星期脚本,每分钟刷新
- lua运行优点
- B2C
- NYOJ 635 Oh, my goddess
- 我的网管生涯和艳遇。
- C++ 解析GPS数据示例