Asp.net网站的首次启动非常缓慢
第一次将网站加载到生产Web服务器中时,它的启动速度非常慢,随后的页面加载速度非常快(包括主页)。
我对该站点进行了预编译,但是没有任何变化。
我在应用程序启动时没有任何代码。
我没有缓存的项目。
有任何想法吗?我怎么知道发生了什么事?
解决方案
回答
这听起来很像是后台编译。但是,如果我们要进行预编译,那不应该是一个问题。
我首先要看的是ORM(如果有)。尤其是NHibernate,在启动时会在后台运行多个编译器,从而将数据层中的每个类都转换为自己的内存中程序集,因此,启动时会受到严重的惩罚。
回答
发布网站时,我们是否选择在发布网站的设置中使网站"可更新"?如果我没有记错的话,也需要编译aspx / ascx文件,如果它们是"可更新的",那么第一次启动将导致重新编译这些资源。
回答
我们是否在web.config中打开了跟踪功能?
回答
只是应用程序域正在加载并将所有二进制文件加载到内存中。另外,它正在初始化静态变量,因此,如果我们有一个静态变量可以从数据库中加载大量数据,则可能会花费一些时间。
回答
在达伦(Darren)快点头。这是DLL更新后.NET应用程序的典型行为。初始加载后,一切都应顺畅地进行。
回答
当我们说"预编译"站点时,我们是使用aspnet_compiler实用程序进行预编译,还是仅使用Visual Studio中的"构建站点"选项?
如果我们不执行前者,建议我们试一下。与Web部署项目结合使用,我们应该可以更轻松地为每个版本部署站点。
回答
最初的速度缓慢有几件事:
- 正在设置appDomain
- ASP.NET正在解析和编译ASPX页面。
- 全局上下文正在初始化。
这是ASP.NET的正常行为。
回答
@Mickey: No, it is turned off. Do I need to turn it on to find out?
跟踪日志将向我们显示每个操作需要多长时间。它可以找到花了这么长时间的东西。
这是一个可以进行设置的链接。
回答
尝试清除事件日志?
回答
使用http://www.iis.net/expand/ApplicationWarmUp来预热应用
这是针对IIS 7.5的,因此,如果我们在Server R2上运行,它将可以正常工作。