标签: mvc-mini-profiler

使用mvc-mini-profiler降低EF分析性能

当我使用下面的函数创建我的上下文时,分析器显示从标准EF(版本4)上下文创建方法增加大约300ms.还有另一种方法可以做到更好的表现吗?它失败了性能分析的目的.

    public static Models.MyEntities GetContext()
    {
        var profiler = MiniProfiler.Current;
        var sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnString"].ConnectionString);
        var profiledConnection = MvcMiniProfiler.Data.ProfiledDbConnection.Get(sqlConn, profiler);
        return ObjectContextUtils.CreateObjectContext<Models.MyEntities>(profiledConnection);
    }
Run Code Online (Sandbox Code Playgroud)

第一个是使用上面的函数来创建上下文.第二种是使用标准的EF上下文创建方法.以下是使用mvc-mini-profiler的性能差异:

Profiler EF上下文:89.1
一些数据库命中:317.9

正常EF上下文:0.1
一些数据库命中:7.4

更新2:我在Visual Studio中进行了一些分析,看起来主要的耗时操作是MvcMiniProfiler.Helpers.StackTraceSnippet.Get(),并且在其中有一个对System.Diagnostics.StackTrace..ctor(bool)的调用.这需要很长时间才能完成,似乎是导致上述延迟的原因.

profiling entity-framework asp.net-mvc-3 mvc-mini-profiler

9
推荐指数
1
解决办法
1151
查看次数

带有Microsoft Enterprise Library的MVC Mini Profiler

我确信可以分析Enterprise Library SQL命令,但我无法弄清楚如何包装连接.这就是我想出的:

Database db = DatabaseFactory.CreateDatabase();
DbCommand dbCommand = db.GetStoredProcCommand(PROC);

ProfiledDbCommand cmd = new ProfiledDbCommand(dbCommand, dbCommand.Connection, MvcMiniProfiler.MiniProfiler.Current);
db.AddInParameter(cmd, "foo", DbType.Int64, 0);

DataSet ds = db.ExecuteDataSet(cmd);
Run Code Online (Sandbox Code Playgroud)

这导致以下异常:

无法将类型为"MvcMiniProfiler.Data.ProfiledDbCommand"的对象强制转换为"System.Data.SqlClient.SqlCommand".

c# enterprise-library mvc-mini-profiler

9
推荐指数
1
解决办法
1621
查看次数

Mini Profiler从1.7升级到1.9会破坏现有代码

我有一个使用mvc-mini-profiler的asp.net项目.我使用的是NuGet包的1.7版本,我注意到有一个更新的软件包,其版本为1.9.我更新了包,现在我的代码不再编译了.无法编译的代码是:

public static T GetProfiledContext<T>() where T : System.Data.Objects.ObjectContext
{
    var conn = GetStoreConnection<T>();
    if (_enableProfiling)
    {
        conn = ProfiledDbConnection.Get(conn);
    }
    return ObjectContextUtils.CreateObjectContext<T>(conn);
}
Run Code Online (Sandbox Code Playgroud)

编译错误报告以下问题:

  • 'MvcMiniProfiler.Data.ProfiledDbConnection'不包含'Get'的定义.
  • "ObjectContextUtils"这个名称在当前上下文中不存在.

我注意到我可以创建ProfiledDbConnection的实例并将它传递给连接和IDbProfiler类型的对象,但我不确定如何获取该对象.

关于ObjectContextUtils,我不知道我应该使用什么.

我该如何解决这些问题?


更新:

通过遵循@ monkeychatter的建议,我设法构建了代码.我现在得到以下运行时异常:

在"MvcMiniProfiler.Data.ProfiledDbConnection"类型的商店提供程序实例上调用"get_ProviderFactory"方法后返回null.商店提供商可能无法正常运行.

通过检查ILSpy中的ProfiledDbConnection,我注意到它不再覆盖DbProviderFactory.这似乎是错误的原因,因为基本实现返回null.有没有人能够解决这个问题?

asp.net entity-framework mvc-mini-profiler

9
推荐指数
1
解决办法
1628
查看次数

MiniProfiler偶尔显示Asp.Net Mvc慢速呼叫操作

我们已经开始使用MiniProfiler并且它有时会显示,特别是当我们在Visual Studio中运行时遇到F5时,在我们的任何代码执行之前,对动作的前3 - 5调用非常慢,如下图所示,它似乎总是如此大约是5,这些是返回图像的动作,但是当MiniProfiler显示我们的任何代码甚至执行之前所有时间都在发生时,如果我注释掉了2050ms的图像,那么另一个需要0.5ms的图像只需要长.我们在web.config中设置了debug = false,这没有任何区别.

我们正在使用ProfilingActionFilter和ProfilingViewEngine,但还有另一种方法来分析这里发生的事情并尝试解决问题吗?

编辑:我们也在使用AutoFac,这是可能的原因,我正在尝试找到一种分析所有内容的方法,以便我可以确切地看到这种情况发生的地方.

编辑:好所以我添加了自己的ControllerFactory,其中包含配置文件和路由约束,因为下面的新图像显示在Application_BeginRequest之前,甚至在创建路径约束或控制器之前发生的所有时间.对于花费这么多时间的事情,我完全不知所措.看看MVC管道的这个链接可以留下什么?

http://blog.stevensanderson.com/blogfiles/2007/ASPNET-MVC-Pipeline/ASP.NET%20MVC%20Pipeline.pdf

在此输入图像描述

在此输入图像描述

asp.net-mvc performance mvc-mini-profiler asp.net-mvc-4

9
推荐指数
1
解决办法
1600
查看次数

MiniProfiler ProfilingActionFilter和ProfilingViewEngine都没有找到

从MiniProfiler v2升级到v3后,ProfilingActionFilter和ProfilingViewEngine似乎丢失了?

我用谷歌搜索,甚至检查了大会上类似的东西,但没有任何东西可以突出,因为它是替代品?

我错过了什么吗?

下面是我Using和我的代码部分尝试实现这一点.

using StackExchange.Profiling;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;



GlobalFilters.Filters.Add(new ProfilingActionFilter());

ViewEngines.Engines.Add(new ProfilingViewEngine(razorEngine));
Run Code Online (Sandbox Code Playgroud)

c# mvc-mini-profiler

9
推荐指数
1
解决办法
2341
查看次数

像这样的java web app profiler

阅读http://code.google.com/p/mvc-mini-profiler/上的文章

对于java web应用程序,这样的任何开源分析器都可用吗?

有人开始将这个端口移植到Java环境中吗?

谢谢.

java profiler mvc-mini-profiler

8
推荐指数
1
解决办法
949
查看次数

Miniprofiler:网站速度莫名其妙

我们安装了miniprofiler.它一直是一种启发性的体验,但是现在我们看到我们的数据库查询运行速度提高了3倍,启用了启动器,因为它已禁用.

我们在应用程序中更改的唯一代码是添加profiledDbConnection:

public static DbConnection GetOpenConnection(string connectionString)
{
    var cnn = new System.Data.SqlClient.SqlConnection(connectionString);  
    // wrap the connection with a profiling connection that tracks timings 
    return MvcMiniProfiler.Data.ProfiledDbConnection.Get(cnn, MiniProfiler.Current);
}
Run Code Online (Sandbox Code Playgroud)

Linq2Sql突然......快.

我不是在抱怨,但为什么会这样呢?

mvc-mini-profiler

8
推荐指数
1
解决办法
1127
查看次数

MiniProfiler没有显示在页面上

我在让MiniProfiler向我展示报告方面遇到了问题.我只是在Dev环境中,它应该一直显示它.添加?pp=help确实会显示帮助页面.在tmp/miniprofile中,有大量的mp_timers_文件.显然有些事情发生在那里.

起初我认为这是一个奇怪的CSS问题,就像我的导航栏覆盖它一样.我尝试加载没有CSS的页面,MiniProfile框仍然没有出现.

如果重要,我没有before_filter设置.但是,当我使用他们的文档中的简单文件时,它没有任何帮助.

ruby-on-rails mvc-mini-profiler

8
推荐指数
2
解决办法
2727
查看次数

MiniProfiler和SqlMembershipProvider

我正在尝试使用SqlMembershipProvider在MiniProfiler中显示时发生任何数据库查询,但我想不出任何更换SqlConnection的方法是使用ProfiledDbConnection,因为它似乎在内部完成所有操作.任何人都有任何巧妙的想法?

asp.net-membership mvc-mini-profiler

8
推荐指数
1
解决办法
115
查看次数

我可以使用MiniProfiler来检测ASP.NET MVC WebApi网站吗?

我正在研究的ASP.NET MVC网站上有一些( - 已发布的Controller)"用户"页面和一些(已发布的ApiController)"api"页面.

该网站使用MiniProfiler来检测"用户"页面,我真的很喜欢它.我希望在"api"页面中具有相同或相似的功能 - 特别是,已执行的SQL语句的记录,以及所有内容的使用时间.

我看到这个看起来很有前途的链接,其中入口点的URL只是输入到浏览器地址栏中,但这是使用ASP.NET MVC WebApi开箱即用的默认视图.我自己的URL返回XML文档(或JSON响应).

此外,我更喜欢能够让我远离浏览器的东西,因为我的现实API调用是由另一个程序启动的,我希望能够记录整个会话的信息,而不仅仅是单一请求.

有什么建议?

asp.net asp.net-mvc mvc-mini-profiler asp.net-web-api

8
推荐指数
1
解决办法
2201
查看次数