我正在处理的ASP.NET Web应用程序项目随着时间的推移而变得越来越慢(在IIS或.NET开发服务器中)。目前需要:
该机器速度相当快 - 一台Core 2 Quad 2.40ghz,8 gig o'RAM,在HyperV下运行dev机器,分配给开发虚拟机2 GB。
有没有办法跟踪/报告初始加载的整个周期?如果我能看到基本的IIS工作进程启动需要多长时间,加载DLL,运行实际的.NET代码,那就太好了。
我知道我可以在代码上使用分析器 - 这没有发现任何超慢的DB连接建立时间,但我想在处理实际页面之前对这些东西的性能有一些了解。我可以看到CPU监视器在进程中间有点达到100%,RAM使用量略有增加 - 但我正在寻找更好的洞察力,希望能够稍微修剪一下。
虽然我没有在项目开始时(4个月前)进行任何测量,但我完全可以确定重装是一个相对轻而易举的事。
任何帮助非常感谢, 程序员谁灿只能饮那么多的咖啡,而-A-积聚发生。
JetBrain的 dotTrace 非常出色(对于这个例子),谢谢。它具有启动Web项目的完美界面,并且很快突出显示大部分时间都在 Application_Start()(在 Global.asax 中)中进行。
其他选项不会这样做,因为:
跟踪选项仅从 PreInit,错过了 Application_Start()调用。
StopWatch 调用会有 要求我知道在哪里看,或者 回到昔日的美好时光 printf式调试......
nprof 想要定位.exe,哪个 尝试连接到新的w3wp.exe实例时会错过目标区域...
答案 0 :(得分:6)
答案 1 :(得分:5)
像JetBrains dotTrace这样的探查器应该告诉你你的瓶颈在哪里......如果你没有看到任何不寻常的东西(即方法上的漫长过程时间)那么它就不是你的申请。一定是环境。可能是因为您正在使用Active Directory并且对Active Directory的调用正在挂起...是否有Web服务调用?您使用的是Team Systems吗?是否有后期制作流程?
对我而言,听起来有些事情已经超时了。这就是你等待这么久的原因。
答案 2 :(得分:4)
过去,我使用过redgate的ANTS性能分析器。这真的很好,它对我很有用。我知道不是每个人都想在这些类型的工具上花钱,但这个可能是值得的。看看,他们有一个免费的14天试用版,你可以在这个网站上使用,找出问题所在。
http://www.red-gate.com/products/ants_performance_profiler/index.htm
祝你好运!答案 3 :(得分:3)
您是否尝试过打开页面跟踪的简单技巧,看看它是否告诉您任何内容?您的aspx页面中的第一行将如下所示:
<%@ Page Language="C#" Trace="true" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="SilverlightApplication1.Web._Default" %>
当页面在浏览器中呈现时,一大堆信息也将附加到其底部。
答案 4 :(得分:2)
分析和跟踪都是很好的建议。
如果您使用DateTime.Now.ToString()建议,我建议您使用System.Diagnostics.StopWatch类。它使用起来非常简单,我发现它更准确。
using System.Diagnostics;
//...
Stopwatch watch = new Stopwatch();
watch.Start();
// Do your loading work here
watch.Stop();
// You can use watch.ElapsedMilliseconds to get the elapsed time
答案 5 :(得分:-1)
将时间写入日志文件并检查。
namespace TracePageLoad
{
public partial class _Default : System.Web.UI.Page
{
string sLogDir = "Your path to write the log";
protected void Page_Load(object sender, EventArgs e)
{
TextWriter objTW = new StreamWriter(sLogDir, true);
objTW.WriteLine(DateTime.Now.ToString());
//Your code
objTW.WriteLine(DateTime.Now.ToString());
objTW.Close();
}
}
}