我刚刚继承了我需要维护的其他人编写的网站(ASP.Net 2.0) 代码并不可怕,但它有很多让网站运行得非常慢的东西。
我有一个想法来监控这一点,我想看看更有经验的开发人员对它的看法。
我现在的目标是找出页面加载时间过长的时间,以便将注意力集中在那些位置。
我正在考虑在Global.asax中挂钩PreRequestHandlerExecute和PostRequestHandlerExecute事件,并在“Pre”中创建一个StopWatch,将它附加到HttpContext.Items,并在“Post”中读取它,如果请求超过了比方说,100毫秒,我会告诉我让我知道。
一些“伪代码”就是:
protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e) {
System.Diagnostics.Stopwatch theTimer = new Stopwatch();
theTimer.Start();
HttpContext.Current.Items.Add("RequestTimer", theTimer);
}
protected void Application_PostRequestHandlerExecute(Object sender, EventArgs e) {
Stopwatch theTimer = (Stopwatch) HttpContext.Current.Items["RequestTimer"];
System.Diagnostics.Debug.WriteLine(theTimer.ElapsedMilliseconds + "@: " + HttpContext.Current.Request.RawUrl)
}
您如何看待这种方法?
这样做是否合理?
是否会让我的网站瘫痪?
有一个更好的方法吗?
一些想法:
- 抓住DateTime.Now.Ticks并存储它可能会更好,这可能比StopWatch更轻
- 我知道最好让所有页面都从我自己的页面继承,然后在那里继续,但我不想通过几十页来改变它们。
非常感谢任何想法! 谢谢!
答案 0 :(得分:3)
更好的方法是启用tracing。
答案 1 :(得分:2)
我不会这样做。这将比它的价值更麻烦。有一些很好的ASP.NET分析工具,如CLR Profiler和Red Gate的ANTS Profiler。
答案 2 :(得分:1)
我只是将开始时间扔到HttpContext集合中并将其拉出来,而不是弄乱秒表。然后,您可以在请求结束时执行简单的减法操作,这对性能的影响可以忽略不计。
答案 3 :(得分:1)
正如BobbyShaftoe所说,分析是你最好的选择。但考虑一下JetBrains的dotTrace;它非常,非常好。