Asp.net mvc 4 如何跟踪对IIS的长时间运行调用?

Asp.net mvc 4 如何跟踪对IIS的长时间运行调用?,asp.net-mvc-4,iis,iis-7,Asp.net Mvc 4,Iis,Iis 7,我们的用户焦躁不安。他们不停地抱怨毛茸茸的、无法测量的东西,尤其是速度慢,却没有给出具体细节,这当然让追踪变得非常困难 尽管如此,很有可能他们是对的,有些服务器调用需要很长时间才能返回。所以我想在网站上安装一种嗅探器(我们在IIS7上使用ASP.NET MVC 4),它将记录任何需要n秒以上才能恢复的调用,或者返回超过x兆字节的数据,以及所有请求参数、响应大小,可能还有一定数量的响应数据 但是我不知道怎么做。有什么建议吗?有多种方法可以做到这一点: 失败的请求跟踪(FRT)–以前称为失败的请求

我们的用户焦躁不安。他们不停地抱怨毛茸茸的、无法测量的东西,尤其是速度慢,却没有给出具体细节,这当然让追踪变得非常困难

尽管如此,很有可能他们是对的,有些服务器调用需要很长时间才能返回。所以我想在网站上安装一种嗅探器(我们在IIS7上使用ASP.NET MVC 4),它将记录任何需要n秒以上才能恢复的调用,或者返回超过x兆字节的数据,以及所有请求参数、响应大小,可能还有一定数量的响应数据


但是我不知道怎么做。有什么建议吗?

有多种方法可以做到这一点:

  • 失败的请求跟踪(FRT)–以前称为失败的请求事件缓冲(FREB),自定义失败条件为会占用一定的时间来加载/运行
  • 使用IIS日志功能记录请求信息,然后使用LogParserStudio之类的工具
  • 在IIS服务器上使用Fiddler或IISMonitor等工具捕获请求信息
对于FRT,可以使用官方文档,并且可以获得如何为长时间运行的流程捕获转储的信息

对于IIS中的日志记录请求信息,可以找到有关日志文件分析的信息

有关配置Fiddler以捕获IIS请求的信息,请查找信息

下面提供了链接资源中的步骤摘要

首次登记税

从给定站点的IIS管理器中,在“操作”窗格的“配置”下,单击“失败的请求跟踪”,并在对话框中输入所需的值以启用失败的请求跟踪

从给定站点的IIS管理器中,在IIS下单击失败的请求跟踪规则,以便为给定请求定义失败规则。在操作窗格中,单击添加并按照向导操作

日志将进入您指定的目录,并可在web浏览器中查看

用于IIS日志记录

默认情况下,在IIS上启用日志记录

从给定站点的IIS管理器中,在IIS下单击“日志记录”,然后在“操作”窗格中,单击“启用”以启用日志记录(如果尚未启用)

从给定站点的IIS管理器中,在IIS下单击日志记录,然后根据需要进行配置,然后单击应用

安装和(如果需要其他步骤,请参阅

打开LogParserStudio并向其中添加日志,然后可以使用SQL查询从日志文件中获取信息

供小提琴手使用

您需要将IIS运行的用户更改为可以启动应用程序的用户,如Fiddler(而不是网络服务),然后使用该用户启动Fiddler


有关更多信息,请参见。

以下是我的看法:

FRT

虽然您可以使用失败的请求跟踪来记录缓慢的请求,但根据我的经验,查找请求在到达应用程序之前失败的原因比查找其运行缓慢的原因更为有用。9/10倍的时间只会告诉您代码中的某个地方出现了减速

日志解析器

是的,您可以下载和分析iis日志。我使用它进行分析-这是一个很棒的gui over log解析器。下面是一个示例,说明如何查询超过1000ms的慢速请求:

SELECT
  To_String(To_timestamp(date, time), 'dd/MM/yyyy hh:mm:ss') As Time,
  cs-uri-stem, cs-uri-query, cs-method, time-taken, cs-bytes,  sc-status
FROM 
  'C:\inetpub\logs\LogFiles\W3SVC1\u_ex140721.log'
WHERE 
  time-taken > 1000 
ORDER BY time-taken desc
新遗址 我的建议-放松自己,注册一个。不,我不为他们工作,但我经常使用他们的APM产品。在服务器上安装代理-设置它。10分钟后,你会对你看到的有关该网站的数据感到惊讶。相信我

它专为在生产环境中工作而设计,为您提供了关于运行速度慢的信息的惊人深度,包括数据库查询和堆栈跟踪。这真是太棒了。一旦它的设置等待下一次用户投诉,请登录并查看时间范围内的跟踪

当您的试用期结束时,您仍然可以在免费层上获得有价值的数据,但它只能持续24小时。我们购买了许可证-价格昂贵,但值得每一分钱。为什么?确定根本原因所需的时间减少了一个数量级,我们可以通过查看慢速请求列表中的第2、3和4项来获得主动性,并开始工作在这些问题成为大问题之前对它们进行警告,最后,当出现问题时,警告会使我们的反应更加灵敏

编码它

你可以使用自己的。这使用Mvc ActionFilters来做日志记录。你也可以使用类似的HttpModule。这种方法的好处是你可以独立于应用程序编译和实现模块,然后只需插入dll并更新web.config来连接模块。我会对这些方法保持警惕对于一个非常繁忙的站点来说。另外,获取正确的细节级别以完全识别根目录也是一项挑战

查看请求


正如Appleman1234所提到的,IIS对于查看当前执行的请求知之甚少。对于“hey Its running slow now”的情况,它非常方便。您可以使用appcmd.exe或IIS gui来执行此操作。您需要安装“Request Monitor”IIS功能才能使其正常工作。这种方法可以初步缩小问题的范围,but不会向您显示控制器中运行缓慢的内容。

谢谢!我将使用New Relic,到目前为止看起来很棒!酷-我想您不会回头。我发现钻研NR会让人上瘾,总是在寻找如何提高性能。嗯,我对NR的体验不太好。您介意看看并告诉我我正在做什么吗错了吗?谢谢!很抱歉听到这个消息。我已经讨论了这个问题,将回答你的新问题。我很恼火这里有大约5个答案。如果它被分解,我将至少投票一个答案。因为我还没有尝试过所有(甚至你的大多数方法),我不能支持这篇文章。