【发布时间】:2012-06-07 04:20:21
【问题描述】:
我正在尝试确定 ASP.NET 应用程序初始启动时间过长(恕我直言)的原因。
该应用程序使用各种第三方库,并且我确信可以合并许多引用,但是,我正在尝试识别(并分配责任)dll 以及它们对扩展启动过程的贡献。
到目前为止,启动时间从 2-5 分钟不等,具体取决于盒子上其他东西的使用情况。基于网站的复杂性,我认为这是不可接受的,我需要将其减少到最多 30 秒的范围内。
为了明确我正在寻找的性能范围,它是从第一个请求到初始 Application_Start 方法被命中的时间。
那么我应该从哪里开始获取有关加载哪些 DLL 以及加载它们需要多长时间的信息,以便我可以尝试将成本/收益放在一起,我们需要解决/整合这些信息。
从能力的角度来看,我已经使用 JetBrains dotTrace 有一段时间了,我很清楚一旦我们进入应用程序后如何对应用程序进行基准测试,但它似乎在应用程序代码之外,因此超出我目前所知道的范围。
我正在寻找的是有关如何在我的代码的第一个入口点之前了解正在发生的事情的方法。
注意:我知道我可以在回收/升级时调用默认页面来进行初始加载,但我宁愿解决实际问题,而不是纸上谈兵。
注意 2:硬件在功能方面已经足够扩展和分离,因此我很确定这不是问题。
【问题讨论】:
-
请在“这是不可接受的项目”或“这是不可接受的我的意见”之间做出选择,因为答案会截然不同:一个是(如果有的话)为实现生产应用程序的目标而做的事情,另一个 - 如何自娱自乐/教育自己关于负载性能。
-
2-5 分钟的启动时间可能会满足这两个标准。如果应用程序域回收并且服务关闭了 2-5 分钟,我很难想象任何开发人员或项目会认为这是可以接受的。
-
我会更新问题,这是 Application_Start 方法被命中之前的时间。
-
您是否有机会使用实体框架? EF 的视图创建可能需要几分钟时间。
-
NHibernate...但我想这是同一个问题...我相信这会提出以下流程。
标签: c# asp.net performance iis