选取MiniProfiler调节和测试ASP.NET MVC网站性能

MVC MiniProfiler是Stack
Overflow
团体安顿的一款对ASP.NET
MVC的习性分析的小程序。可以对3个页面自身,及该页面通过平素引用、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找到。配置及使用能够看那里:http://code.google.com/p/mvc-mini-profiler

为树立高效的网站黄金参考标准,雅虎2005年为网站加强速度的十三个大致规则

图片 1

Stack Overflow 用MVC Mini
Profiler来促进开源,而在把每一页的右上角服务器渲染时间的简约行来迫使我们缓解大家具有的性子衰退和疏漏。如若您在使用.NET开发应用,一定要运用上这几个工具。

包涵以下为主组件:

  • MiniProfiler
  • MiniProfiler.EntityFramework

怎么着设置?

壹 、环境准备
  • Visual Studio 2010
  • ASP.NET MVC项目
  • 如若供给调节和测试EF,提议提高到Entity Framework 4.2
二、安装

推荐介绍使用NuGet艺术开始展览安装,参考小说《动用 NuGet
管理项目库

首先步:在引用上右键选择“Manage NuGet Packages”
图片 2

  • 第二步:Online搜索miniprofiler

图片 3

MiniProfiler、MiniProfiler.EF、MiniProfiler.MVC3,同时会自动安装注重组件:WebActivator,
同时也会活动在品种里面添加代码文件:MiniProfiler.cs

  • 其三步:修改代码使MiniProfiler生效

在global.cs的Application_Start事件之中扩张代码:
StackExchange.Profiling.MiniProfilerEF.Initialize();
修改View的layout文件,在head区域扩展如下代码:@StackExchange.Profiling.MiniProfiler.RenderIncludes()

 

只要设置步骤一切顺遂的话,打开站点的时候,就足以在左上角观察页面执行时间了,点开可以观察更详细的消息,假诺有SQL的话,还会议及展览示SQL语句信息,非凡的方便人民群众。
页面上只要有ajax请求,也会同时显示到左上角。要是左上角显示深红提示,则表示大概存在品质难题亟待处理:

图片 4

点开SQL部分,能够见到详细的SQL语句

图片 5

标志为duplicate的有个别,代表在三遍呼吁个中,重复执行了询问,能够优化。

问题:

壹 、在组成使用EF 4.3的时候发生如下错误:

Invalid object name ‘dbo.__MigrationHistory’.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException
exception, Boolean breakConnection)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException
exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,
SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet
bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader
ds, RunBehavior runBehavior, String resetOptionsString)
   at
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior
cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean
async)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior
cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String
method, DbAsyncResult result)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior
cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String
method)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior
behavior, String method)
   at
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior
behavior)
   at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior
behavior)
   at
MvcMiniProfiler.Data.ProfiledDbCommand.ExecuteDbDataReader(CommandBehavior
behavior) in
\mvc-mini-profiler\MvcMiniProfiler\Data\ProfiledDbCommand.cs:line
155
   at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior
behavior)
   at
System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand
entityCommand, CommandBehavior behavior)

供给在EF 4.3上关闭数据库开端化策略:

public class SettingContext : DbContext
{
        static SettingContext()
        {
            Database.SetInitializer<SettingContext>(null);
        }

相关文章