ASP.NET Web应用程序缓慢

时间:2013-10-22 19:15:24

标签: asp.net iis web-applications

我有一个在IIS 7.5 / .NET Framework 4.0服务器上运行的asp.net Web应用程序。每当我导航到在此服务器上运行的任何网页时,最初加载大约需要12秒。之后,导航很快(约0.5秒,即使在重击页面上)。如果将其闲置两分钟,则下一次请求会再次减速。我可以说这是因为连接超时设置为120秒......我猜测在该限制之后,当下一页请求时,站点必须重新加载所有内容。此站点确实调用两个不同的数据库,但是,默认页面不应该这样做并且需要很长的初始加载时间。我已经尝试为IIS 7.5设置应用程序初始化,但在完成此操作后,注意到了最好的边际更改。从我一直在阅读的内容来看,IIS 7.5中的这个模块似乎取得了非常好的成功。有没有其他方法来绕过这个加载时间而不必仅仅依赖于高连接超时值,因为这无法解决初始加载时间?

2 个答案:

答案 0 :(得分:3)

当WebApp空闲时,IIS将关闭应用程序以节省资源。这可能发生在你的情况下。

它还表示如果最后一个用户会话超时,应用程序将关闭。我希望this文章能够为您提供正确的指导。

查看请求到达运行时会发生什么。

  1. 当ASP.NET收到对第一个资源的请求时 应用程序,名为ApplicationManager的类创建一个应用程序 域。 (应用程序域提供应用程序间隔离 对于全局变量,并允许卸载每个应用程序 分开。)
  2. 在应用程序域中,名为Hosting的类的实例 创建环境,提供对信息的访问 应用程序,例如应用程序所在的文件夹的名称 存储。
  3. 创建应用程序域并进行托管后 环境对象实例化,ASP.NET创建并初始化 核心对象,如HttpContext,HttpRequest和HttpResponse。
  4. 在初始化所有核心应用程序对象之后, 通过创建一个实例来启动应用程序 HttpApplication类。
  5. 如果应用程序具有Global.asax文件,则ASP.NET会创建 Global.asax类的一个实例,派生自 HttpApplication类并使用派生类来表示 应用
  6. 看看它是如何发生的

    How it happens!!!

答案 1 :(得分:1)

与我认为的连接超时无关,而是缺少另一个超时和必要文件。在上面的评论中,每个Zerkey的问题,我有点好奇并四处寻找方法来查看加载的内容,因为从我的PC调试它仍然很慢,但速度要快得多(大约4-6秒)。在发布到服务器的IIS中,我去了工作进程,选择了进程并单击右侧的当前请求。这告诉我它被挂在我使用的第三方移动重定向服务51degrees.mobi上。这些文件加载​​的时间大约为12秒。发生的事情是日志记录功能设置为登录App_Data文件夹,并且该目录丢失。它显然没有给我一个明显的错误,只是尝试它并失败。一旦我添加了这个目录和日志文件,并重新激活了应用程序初始化,一切都很快。