我有一个托管在 Windows azure 上的 ASP.NET (webforms) 应用程序,位于 XS 大小的实例上。一切都运行良好,除了当我在一段时间不使用它后第一次导航到该网站时,它真的很慢——比如超过 45 秒!一旦它启动并运行,页面又好又快;这只是需要很长时间的初始负载。
如何诊断这段时间花在哪里?我已经在 SessionStart 事件中记录(到数据库),并且不同浏览器中的两个请求相隔 10 秒开始,都在同一秒内记录,这表明我添加的任何日志记录或其他代码在所有时间都用完之前不会执行。或者数据库连接可能需要很长时间。
我意识到有一些事情可能会影响这一点,例如
它在 XS 实例上。他们不大。
我的代码目前是在调试模式下构建的。这使得需要加载更大的程序集和 pdb 文件,所以它比它可能的慢。
网站只需要一点时间来加载。这就是人们更改 idleTimeout和可能的回收间隔的原因。
我正在使用相当大的 Telerik 控件,其中包含 32mb 的 dll。(但第一页上没有使用)。
但我想要一种可以用来确定一直在占用什么的方法,例如,对正在发生的事情进行一些测量以及它占用了多长时间,或者我可以做更多的事情来尝试让它更快地启动。
在我的带有本地数据库和网络的开发机器上,启动时间可能是 5 秒。可能它只比 XS 实例快 10 倍,但如果是这种情况,我该如何计算出我的本地机器上花费的时间,以便我可以尝试改进它?