如何追踪长时间运行的IIS调用?

时间:2014-12-25 08:43:03

标签: asp.net-mvc-4 iis iis-7

我们的用户不安。他们一直在抱怨羊毛,不可测量的东西,特别是缓慢,没有给出具体细节,这当然使得追踪非常困难。

尽管如此,它们很可能是正确的,有些服务器调用时间太长而无法返回。所以我想在网站上放置一些嗅探器(我们在IIS7上使用ASP.NET MVC 4),它将记录任何超过 n 秒的调用,或者返回超过 x 兆字节的数据,以及所有请求参数,响应大小以及可能的一定数量的响应数据。

但是,我还不知道如何做到这一点。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

这是我对此的看法:

<强> FRT

虽然您可以使用失败的请求跟踪来记录慢速请求,但根据我的经验,查找请求在到达应用程序之前失败的原因更有用,而不是为什么它运行缓慢。 9/10次它只是向你显示减速在你的代码中。

Log Parser

是的,您可以下载和分析iis日志。我使用Log Parser Lizard进行分析 - 它是一个很好的gui over log parser。以下是您可以在1000毫秒内查询慢速请求的示例:

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

New Relic 我的建议 - 轻松自己并注册free trial。不,我不为他们工作,但我已经使用了他们的APM产品。在服务器上安装代理 - 进行设置。在10分钟内,您会对您看到的有关该网站的数据感到惊讶。相信我。

它的设计目的是在生产环境中工作,并为您提供有关运行缓慢,数据库查询和堆栈跟踪的惊人深度信息。它纯粹的真棒。一旦其设置等待下一个用户投诉,请登录并查看时间范围的跟踪。

当您的专业审判结束时,您仍然可以在免费套餐上获得有价值的数据,但它只能保留24小时。我们购买了许可证 - 价格昂贵,但值得每一分钱。为什么?确定根本原因所花费的时间减少了一个数量级,我们可以通过查看缓慢请求列表中的第2,3和4号内容并在它们成为大问题之前处理它们来获得主动性,最后警报使我们更多当事情出错时反应更快。

编码

你可以自己动手。此blog使用Mvc ActionFilters进行日志记录。您也可以使用类似于此post的HttpModule。这种方法的好处是你可以从你的应用程序中单独编译和实现模块,然后只需输入dll并更新web.config以连接模块。对于一个非常繁忙的网站,我会对这些方法保持警惕。此外,获得正确的细节水平以完全识别根目标具有挑战性。

查看请求

正如Appleman1234所提到的,IIS有一点鲜为人知feature来查看当前正在执行的请求。它对于'嘿它现在运行缓慢'的情况很方便。您可以使用appcmd.exe或IIS gui来执行此操作。为此,您需要安装“请求监视器”IIS功能。这种方法可以解决问题的基本范围,但是没有告诉你控制器中的运行速度是否缓慢。

答案 1 :(得分:2)

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

  • 失败请求跟踪(FRT) - 以前称为失败请求事件缓冲(FREB),其自定义失败条件需要一段时间才能加载/运行
  • 使用IIS日志记录功能记录请求信息,然后使用LogParserStudio等工具
  • 使用IIS服务器上的Fiddler或IISMonitor等工具捕获请求信息

对于FRT,官方文档可用here,并且有关如何为长时间运行的进程捕获转储的信息是可用的here

有关IIS中的日志记录请求信息,请参阅here

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

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

对于FRT

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

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

日志将放在您指定的目录中,并且可以在Web浏览器中查看。

用于IIS日志记录

IIS上默认启用日志记录

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

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

安装LogParser.Net 4.xLogParserStudio(如果您需要其他步骤,请参阅here

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

对于Fiddler

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

另请参阅Monitor Activity on a Web Server (IIS 7)以获取更多信息。