【问题标题】:MVC2 Performance on Windows Server 2008 R2 IIS7Windows Server 2008 R2 IIS7 上的 MVC2 性能
【发布时间】:2011-04-26 19:07:50
【问题描述】:

我正在一台功能强大的 Windows Server 2008 R2 服务器上的 IIS7 下部署 MVC2 应用程序。它连接到 SQL Server 2008 数据库,应用程序性能比在开发人员工作站上的调试器中运行时(连接到相同的 SQL Server 数据库)慢得多。我已经检查了网络连接,事件日志中没有任何内容表明 Windows 存在问题。我还在数据库服务器上运行了 Profiler,并且查询很快就启动了。

对于诊断此性能问题的任何帮助将不胜感激。我什至构建了一个新的 2008 R2 服务器来测试它,希望它是服务器本身,但性能是一样的。

谢谢

编辑 1:

IIS 在运行 Windows Server 2008 R2 Standard、32GB 内存的 Dell R710 服务器上运行。 SQL Server 2008 托管在运行 Server 2008 R2 Standard、12GB 内存的单独 R710 上。最初,我在 VM 上运行 IIS,但我将其移至物理机以查看性能下降是否是由于 VM 造成的。我在两者上都经历了相同的表现,所以看起来这不是一个因素。

编辑 2:

似乎打开与数据库的连接是瓶颈的一部分,随后触发存储过程也需要相当长的时间:

-打开数据库连接:5 秒(后续连接被缓存,因此它们不需要 5 秒)

-第一个存储过程:

-第二个存储过程:5秒

-第三个存储过程:

-第四个存储过程:

-第五个sproc:6秒

【问题讨论】:

  • IIS 和 SQL 在同一个盒子上?虚拟化?
  • 否,IIS 在运行 Windows Server 2008 R2 Standard、32GB 内存的物理戴尔 R710 服务器上。运行 Server 2008 R2 Standard、12GB 内存的单独 R710 上的数据库。

标签: sql-server-2008 asp.net-mvc-2 iis-7 windows-server-2008-x64


【解决方案1】:

首先,Windows Server 2008 R2 有 IIS 7.5,而不是 IIS7。可能没关系。但是,它是一个不同的版本。

其次,你需要找出瓶颈在哪里。尝试删除查询并仅使用虚拟数据。还是慢吗?如果不是,那么它与数据访问无关。如果是,那么您知道这是一个数据访问问题。

【讨论】:

  • 我不认为是数据访问。我这样说是因为当我在本地工作站(Win7 64 位)上的调试器中运行应用程序,同时连接到与上面完全相同的数据库时......它运行得很快。它在 1/10 秒内返回所有数据(多次调用)。当托管在 Server 2008 上(调用同一个数据库服务器)时,大约需要 10 秒......每次调用之间都有暂停。我刚刚检查过,Win7 机器也运行 IIS 7.5,与 Server 2008 版本相同。
  • @JohnyD - 这并没有改变您必须找到瓶颈的事实。最简单的方法(如果您没有托管代码分析器)是在问题消失之前取出碎片。
  • 似乎打开与数据库的连接是瓶颈的一部分,随后触发存储过程也需要相当长的时间:-打开数据库连接:5 秒(后续连接被缓存,因此他们不需要 5 秒)-第一个 sproc:
  • 我们现在已将代码切换为使用服务器的 IP 地址......所以我们已经排除了 dns 问题。
  • 我的下一个猜测是 Active Directory 问题,假设您使用的是加入域的服务器。检查事件日志,并运行 dcdiag 和其他网络诊断工具。
【解决方案2】:

Here are slides 来自关于优化 ASP.NET MVC 应用程序的演示文稿。他们能够将应用程序的性能从 8 个请求/秒提高到 400 个请求/秒。

他们在幻灯片中提到了他们如何对其进行分析和识别瓶颈(查询编译、对 RenderPartial 的多次调用、url 生成等),并在演示结束时给出了一些提示。

【讨论】:

  • 是的,我不会太相信这一点 - 他们在进行基准测试时没有使用发布模式 - 哦!这也与旧版本有关。这很可能是数据库问题。
猜你喜欢
  • 1970-01-01
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
  • 2015-08-24
  • 1970-01-01
相关资源
最近更新 更多