petapoco 使用 MiniProfiler Glimpse监控
2016-04-22 11:35
363 查看
PetaPoco是一款适用于.Net(window)和Mono(linux)的微小、快速、单文件的微型ORM。
MVCMiniProfiler是Stack
Overflow团队设计的一款对ASP.NETMVC的性能分析的小程序,适用于.Net(window)和Mono(linux)。可以对一个页面本身,及该页面通过直接引用、Ajax、Iframe形式访问的其它页面进行监控,监控内容包括数据库内容,并可以显示数据库访问的SQL(支持EF、EFCodeFirst等
)。并且以很友好的方式展现在页面上。
该Profiler的一个特别有用的功能是它与数据库框架的集成。除了.NET原生的DbConnection类,profiler还内置了对实体框架(EntityFramework)以及LINQtoSQL的支持。任何执行的Step都会包括当时查询的次数和所花费的时间。为了检测常见的错误,如N+1反模式,profiler将检测仅有参数值存在差异的多个查询。
MiniProfiler是以ApacheLicenseV2.0协议发布的,你可以在NuGet找到。
1.安装MiniProfiler
2.在Global.asax加入MiniProfiler相关的监控代码
3.修改_Layout.cshtml视图文件
在Views\Shared\_Layout.cshtml文件的body前面加上一段代码,让监控展示在页面上。
增加
如图
4.在Web.config加入代码
运行程序,查看页面如下图:
已经可以看到页面生成所需要的时间,此时还没监控到sql的运行情况
5.给内部函数增加监控
6.给petapoco增加监控,新增DatabaseWithMVCMiniProfiler.cs
7.生成和返回Database
8.再次运行可以看到有了sql的监控
其他监控软件参考资料
Thereareafewwaystodebug/profileNPoco.Theyarelistedbelow,andarecommonlydonebyinheritingfromDatabaseandoverridingaspecificmethod.Note:Makesureyou
instantiateyournewclass(
NanoProfiler是一个EFLearningLabs出品的免费性能监控类库(即将开源)。它的思想和使用方式类似于MiniProfiler的。
是国人设计,并开源.
/content/3539566.html
miniprofiler
http://miniprofiler.com/
Manual
Glimpse
http://getglimpse.com/
Glimpsewillusuallyhookitselfupbyinstallingthefollowingpackages.
ShowlastSQLexecuted
ontheASP.NETerrorpage
Credit:Sam
Saffron
MVCMiniProfiler是Stack
Overflow团队设计的一款对ASP.NETMVC的性能分析的小程序,适用于.Net(window)和Mono(linux)。可以对一个页面本身,及该页面通过直接引用、Ajax、Iframe形式访问的其它页面进行监控,监控内容包括数据库内容,并可以显示数据库访问的SQL(支持EF、EFCodeFirst等
)。并且以很友好的方式展现在页面上。
该Profiler的一个特别有用的功能是它与数据库框架的集成。除了.NET原生的DbConnection类,profiler还内置了对实体框架(EntityFramework)以及LINQtoSQL的支持。任何执行的Step都会包括当时查询的次数和所花费的时间。为了检测常见的错误,如N+1反模式,profiler将检测仅有参数值存在差异的多个查询。
1.安装MiniProfiler
Install-PackageMiniProfiler
Install-PackageMiniProfiler.MVC4
2.在Global.asax加入MiniProfiler相关的监控代码
usingStackExchange.Profiling;
protectedvoidApplication_BeginRequest() { if(Request.IsLocal) { MiniProfiler.Start(); } } protectedvoidApplication_EndRequest() { MiniProfiler.Stop(); }
3.修改_Layout.cshtml视图文件
在Views\Shared\_Layout.cshtml文件的body前面加上一段代码,让监控展示在页面上。
增加
@StackExchange.Profiling.MiniProfiler.RenderIncludes()
如图
4.在Web.config加入代码
<system.webServer> <handlers> <addname="MiniProfiler"path="mini-profiler-resources/*"verb="*"type="System.Web.Routing.UrlRoutingModule"resourceType="Unspecified"preCondition="integratedMode"/> </handlers> </system.webServer>
4.查看运行结果
运行程序,查看页面如下图:已经可以看到页面生成所需要的时间,此时还没监控到sql的运行情况
5.给内部函数增加监控
varprofiler=MiniProfiler.Current; using(profiler.Step("获取UserInfo")) { tmp=_userService.GetUserInfo(1); tmp.username="王五"; }
6.给petapoco增加监控,新增DatabaseWithMVCMiniProfiler.cs
usingSystem; usingSystem.Data; usingSystem.Data.Common; usingStackExchange.Profiling; namespaceSL.ORM.PetaPoco { publicclassDatabaseWithMiniProfiler:Database { publicDatabaseWithMiniProfiler(IDbConnectionconnection):base(connection){} publicDatabaseWithMiniProfiler(stringconnectionStringName):base(connectionStringName){} publicDatabaseWithMiniProfiler(stringconnectionString,stringproviderName):base(connectionString,providerName){} publicDatabaseWithMiniProfiler(stringconnectionString,DbProviderFactorydbProviderFactory):base(connectionString,dbProviderFactory){}
publicoverrideIDbConnectionOnConnectionOpened(IDbConnectionconnection)//重点 { //wraptheconnectionwithaprofilingconnectionthattrackstimings returnnewStackExchange.Profiling.Data.ProfiledDbConnection((DbConnection)connection,MiniProfiler.Current); } } }
7.生成和返回Database
publicDatabaseAccountDbContext { get { //returnnewDatabase(connectionName); returnnewDatabaseWithMiniProfiler(connectionName);//使用MiniProfiler监控性能 } set{this.AccountDbContext=value;} }
8.再次运行可以看到有了sql的监控
其他监控软件参考资料
Thereareafewwaystodebug/profileNPoco.Theyarelistedbelow,andarecommonlydonebyinheritingfromDatabaseandoverridingaspecificmethod.Note:Makesureyou
instantiateyournewclass(
MyDbasbelow)whencreatingaDatabasefromthenon.
NanoProfiler是一个EFLearningLabs出品的免费性能监控类库(即将开源)。它的思想和使用方式类似于
是国人设计,并开源.
publicclassMyDb:Database { publicMyDb(stringconnectionStringName):base(connectionStringName){} publicoverrideIDbConnectionOnConnectionOpened(IDbConnectionconn) { vardbprofiler=newDbProfiler(profilingSession.Current.Profiler); returnnewProfiledDbConnection(conn,dbprofiler); } }
miniprofiler
publicclassMyDb:Database { publicMyDb(stringconnectionStringName):base(connectionStringName){} publicoverrideIDbConnectionOnConnectionOpened(IDbConnectionconn) { returnnewProfiledDbConnection((DbConnection)conn,MiniProfiler.Current); } }
Manual
publicclassMyDb:Database { publicMyDb(stringconnectionStringName):base(connectionStringName){} publicoverridevoidOnExecutingCommand(IDbCommandcmd) { File.WriteAllText("log.txt",FormatCommand(cmd)); } }
Glimpsewillusuallyhookitselfupbyinstallingthefollowingpackages.
Install-PackageGlimpse.ADO
Install-PackageGlimpse.Mvc4(oryourmvcversion)
ontheASP.NETerrorpage
Credit:Sam
Saffron
publicclassMyDb:Database
{
publicMyDb(stringconnectionStringName):base(connectionStringName){}
publicoverridevoidOnException(Exceptione)
{
base.OnException(e);
e.Data["LastSQL"]=this.LastSQL;
}
}
voidApplication_Error(objectsender,EventArgse)
{
varlastError=Server.GetLastError();
stringsql=null;
try
{
sql=lastError.Data["LastSQL"]asstring;
}
catch
{
//skipit
}
if(sql==null)return;
varex=newHttpUnhandledException("Anunhandledexceptionoccurredduringtheexecutionofthecurrentwebrequest.Pleasereviewthestacktraceformoreinformationabouttheerrorandwhereitoriginatedinthecode.",lastError);
Server.ClearError();
varhtml=ex.GetHtmlErrorMessage();
html=html.Insert(html.IndexOf("<b>StackTrace:</b>"),@"
<b>LastSql:</b><br><br>
<tablewidth='100%'bgcolor='#ffffccc'>
<tbody>
<tr>
<td><code><pre>"+sql+@"</pre></code></td>
</tr>
</tbody>
</table><br>");
Response.Write(html);
Response.StatusCode=500;
Response.End();
}
相关文章推荐
- structs2中,启动Tomcat时异常:严重: Exception starting filter struts2 java.lang.NullPointer...
- Linux系统下安装rz/sz命令及使用说明
- 关于opengl中glColor3f的应用
- linux中cron用法
- centos rm -rf 恢复删除的文件
- linux里的backlog详解
- Linux LVM硬盘管理及LVM扩容
- nginx-1.6.3平滑升级到nginx-1.8.1
- centos6.5安装nodejs
- 八个Docker的真实应用场景
- Linux Nginx升级
- 转:Linux系统中各个目录的作用
- tomcat内存溢出
- Tomcat8 Spring2.5 jndi jta 配置
- 教你摆脱低级程序猿 项目中cocopads的安装使用
- Linux文件命令和用法
- linux后台运行和关闭、查看后台任务
- linux echo 用法 【 -e \c 体会】
- .Net4.0的网站在IE10、IE11出现“__doPostBack未定义”的解决办法
- tomcat手动启动闪退解决办法