Sha*_*ica 4 iis iis-7 asp.net-mvc-4
我们的用户焦躁不安。他们不断抱怨毛茸茸的、无法衡量的东西,特别是缓慢,但没有给出具体细节,这当然很难追踪。
尽管如此,他们很可能是对的,有些服务器调用需要很长时间才能返回。所以我想在网站上放置某种嗅探器(我们在 IIS7 上使用 ASP.NET MVC 4),它会记录任何需要超过n秒的调用,或者返回超过x兆字节的数据,连同所有请求参数、响应大小,可能还有一定数量的响应数据。
不过,我不知道如何做到这一点。有什么建议?
这是我的看法:
FRT
虽然您可以使用失败请求跟踪来记录慢速请求,但根据我的经验,它更有助于找出请求在到达您的应用程序之前失败的原因,而不是它运行缓慢的原因。9/10 倍它会简单地向您展示速度减慢在您的代码中的某个地方。
日志解析器
是的,您可以下载和分析 iis 日志。我使用Log Parser Lizard进行分析 - 它是一个很好的 gui 超过日志解析器。以下是如何查询超过 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
Run Code Online (Sandbox Code Playgroud)
New Relic 我的建议 - 对自己放轻松并注册免费试用。不,我不为他们工作,但我经常使用他们的 APM 产品。在服务器上安装代理 - 设置它。在 10 分钟内,您会惊讶于您看到的有关该站点的数据。相信我。
它旨在在生产环境中工作,并为您提供有关运行缓慢的信息的惊人深度,包括数据库查询和堆栈跟踪。其纯真棒。一旦它的设置等待下一个用户投诉,登录并查看时间范围的跟踪。
当您的专业试用期结束时,您仍然可以在免费套餐中获得有价值的数据,但它只会保留最后 24 小时。我们购买了许可证 - 是的,很贵,但值得每一分钱。为什么?确定根本原因所需的时间减少了一个数量级,我们可以通过查看慢请求列表中的第 2、3 和 4 项并在它们成为大问题之前对其进行处理来积极主动,最后警报使我们受益匪浅出现问题时反应更灵敏。
编码
你可以滚动你自己的。本博客使用 Mvc ActionFilters 来进行日志记录。您还可以使用类似于这篇文章的 HttpModule 。这种方法的好处是你可以独立于你的应用程序编译和实现模块,然后只需放入 dll 并更新 web.config 来连接模块。对于一个非常繁忙的站点,我会警惕这些方法。此外,获得正确的细节水平以完全识别根是具有挑战性的。
查看请求
正如 Appleman1234 所提到的,IIS 有一个鲜为人知的功能来查看当前正在执行的请求。它对于“嘿它现在运行缓慢”的情况很方便。您可以使用 appcmd.exe 或 IIS gui 来执行此操作。您需要安装“请求监视器”IIS 功能才能使其正常工作。这种方法可以基本缩小问题范围,但不会显示控制器中运行缓慢的内容。
| 归档时间: |
|
| 查看次数: |
3652 次 |
| 最近记录: |