2

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

4

2 回答 2

3

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

它还表示,如果最后一个用户会话超时,应用程序将关闭。我希望这篇文章能正确地指导你。

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

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

看看它是如何发生的

怎么回事!!!

于 2013-10-23T04:12:01.603 回答
1

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

于 2013-10-23T18:56:19.903 回答