【问题标题】:MVC 5 application on IIS 8 in Windows Server 2012 (virtual machine) is very slow (not only on initial load)Windows Server 2012(虚拟机)中 IIS 8 上的 MVC 5 应用程序非常慢(不仅在初始加载时)
【发布时间】:2016-02-16 17:55:18
【问题描述】:

目标是在 Windows Server 2012 内的 IIS 8 上启动 MVC 5 Web 应用程序(Microsoft 评估标准版) ) 在虚拟机(VMware Workstation 12 Player,免费版)中测试整个系统的发布。

我设法运行了该应用程序,但问题是它非常慢。例如。 index.html 是一个静态 HTML 页面,需要 60 秒以上 才能加载。但为什么?在 Visual Studio 和 IIS Express 中,一切正常。

更多信息:

  1. 在发布时,我预编译应用程序。您可以在下图中看到目录结构。我将这些文件放入C:\inetpub\wwwroot\test"

  1. 目标框架是 .NET 4.6。因此我安装了.NET 4.6 packageDefaultAppPool 说是 v4.0,但显然使用的是正确的 4.6 版本。

  2. 为了测试,我添加了另一个应用程序到同一个应用程序池 - 即 C:\inetpub\wwwroot\test2" - 我在其中放置了一个 hello-world index.html。它加载速度很快。因此,我预计 MVC5 会出现问题

  3. Windows Server 2012 正在虚拟机中运行。我给了 VM 4GB RAM 和 6 个 CPU 内核(超线程),但它没有帮助。任务管理器显示 5% CPU25% RAM 消耗。因此,我认为问题在于 IIS

非常感谢您的帮助!

【问题讨论】:

  • 某事告诉我你在错误的堆栈中。但无论如何你应该检查你的缓存配置。
  • cachekernel cache 都已启用。你想让我添加一个规则(以及哪个)?
  • 静态缓存呢?

标签: c# asp.net asp.net-mvc-5 iis-8


【解决方案1】:

谢谢,终于找到问题了:我使用的是Sql Server LocalDb,它是文件系统中的本地.mdf-file。 Application Pool´s Identity 设置为 ApplicationPoolIdentity,我不得不将其更改为 LocalSystem。现在应用程序池可以访问数据库,并且 IIS 正常运行。

令我惊讶的是,即使 IIS需要 数据库来加载 index.html,它显然试图立即建立连接。在 60 年代不成功后,它说,“我无法连接,所以我会在没有数据库的情况下尝试它。” 并继续加载。如果不需要数据库,它可以工作。我猜这是由于 DB-Connection-Pooling 造成的。

【讨论】:

  • 这不是 IIS 故障。它是正确处理它的代码。尝试捕获查询并返回会立即告诉您的错误消息。
  • 重点是,即使我访问了不需要数据库连接的页面(= 静态 HTML 页面),页面加载速度也很慢。因此很难检测到错误,因为我认为它不依赖于数据库连接。这让我回到了 DBCP 理论。还是你有更好的主意?
  • 如果您的代码不使用页面上的数据库,则不会出现数据库连接问题。加载纯静态 html 文件的速度应该与加载图像的速度相同(两者都不需要连接,只需下载文件即可。即使 web.config 数据连接“无法访问”,站点也应该可以很好地加载。)
  • 所以如果你的问题就像你说的那样,(没有代码访问数据库但仍然出现数据库问题,那么这是一个非常有趣的错误,通过加载 css、js 或只是图像文件或其他任何静态的文件,如果您真的不使用静态 html 页面上的数据库,那么它们将加载相同的问题,我们可以肯定地说这是一个 IIS 问题。如果不是,那么静态页面是不是真正静态的东西正在使用数据库(可能在视图页面中,它在您的“静态”内容页面周围加载)
  • 我再次在代码中查找原因,并认识到所有控制器都分配了一个实体框架数据库上下文的对象 - 间接地,通过依赖注入。当 DI 容器创建依赖关系树时,它会创建实体框架上下文,它会尝试访问 DB 文件。我猜问题出在实体框架中,或者可能在 DI 实现(Ninject)中......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-11
  • 2019-06-15
  • 1970-01-01
  • 2015-03-12
  • 1970-01-01
相关资源
最近更新 更多