ASP.NET网站在生产服务器上的性能下降

时间:2009-08-27 10:35:19

标签: c# asp.net iis web

我的问题是我的ASP.NET网站在我的生产服务器上的运行速度比我的开发服务器上慢。

在我的开发环境中120ms执行的页面需要400ms才能在服务器上执行。我使用分析器监视SQL服务器,并且在服务器上运行400ms的页面上运行的查询只需要大约50ms即可完成 - 所以我确信自己的问题不在于SQL服务器。

我的开发机器是Intel I7,配备6GB RAM,生产服务器是2x AMD四核,配备16GB内存。

9 个答案:

答案 0 :(得分:16)

您可以考虑对网站的性能提升进行考虑。

  1. 设置debug = false
  2. 除非必要,否则请关闭跟踪
  3. 如果不需要,请关闭会话状态。 ASP.NET自动管理会话状态。但是,如果您不需要会话,禁用它将有助于提高性能
  4. 在不需要时禁用ViewState。
  5. 避免频繁往返数据库
  6. 避免抛出异常。 异常是处理应用程序逻辑中发生的错误的一种更好的方法。但是,抛出异常是一种昂贵的资源,必须避免。使用特定的异常并尽可能少地使用以避免资源开销
  7. 使用缓存来提高应用程序的性能。
  8. 使用Finally Method杀死资源
  9. 修改 使用本网站衡量您的网站表现 http://www.websiteoptimization.com/services/analyze/
    http://www.websitepulse.com/

答案 1 :(得分:5)

您是否在web.config中检查过debug = false?

服务器是64位吗? 尝试为应用程序创建专用应用程序池,并将应用程序池设置为以32位经典模式运行。 这有什么不同吗?

您是预编译的类还是已将其设置为在运行时编译?

答案 2 :(得分:2)

在页面中设置Trace =“true”(<%@ Page Trace =“true”...),当您在浏览器中加载页面时,您将在页面底部获得大量有用信息。您将确切知道在服务器上处理请求需要多长时间。如果时间足够低,那么问题可能出在IIS设置中。将它们与开发环境中的那些进行比较。

答案 3 :(得分:1)

您的SQL服务器是否在另一台服务器上进行生产,但是在本地进行开发?

答案 4 :(得分:1)

从阅读所有建议开始,它似乎没有任何效果,开始逐渐从您的网站中取出代码,看看这会如何影响时间。一次删除大约10行代码或HTML,看看是否存在巨大差异。

否则,它可能与IIS有关,对不起,我不是没有IIS大师。

答案 5 :(得分:0)

导致传输延迟的大量视图状态?

答案 6 :(得分:0)

这是您在服务器上唯一的网站吗? 16 GB是相当不错的内存,但如果在同一台服务器上有许多热门网站,他们可能会占用资源和CPU时间。

除此之外,我无法想到为什么您的网站在制作上比在开发中慢。

你看了索引吗?他们都在服务器上?

答案 7 :(得分:0)

您需要减少变量。

尝试消除两种环境之间的所有差异,然后逐一进行更改,直到找出它是什么。

确保web.config在两种环境中都相同 确保两个环境都指向第三个盒子上的同一个数据库服务器 确保在两种环境中都使用相同版本的IIS 确保在两种环境中IIS配置相同 在两种环境中运行相同的测试数据 等...

答案 8 :(得分:0)

在我的开发机器和生产机器的性能差异长时间撞到墙壁后,我终于陷入了深深感觉到处理器实际上比你会想。

我从基于AMD的解决方案转变为基于英特尔的解决方案(Xeon!),获得了.3GHz和更快的磁盘。

我也获得了性能提升,而不是x3和我的开发机器一样慢,现在速度慢到x0.75慢 - 显然仍然不是我的开发机器能够提供的闪电速度,但它越来越近了。 / p>

在进一步调试时,我注意到大部分性能问题(实际上并不奇怪)来自LINQ to SQL必须编译查询,对我来说似乎很奇怪的是,一旦我尝试预编译LINQ查询并运行同样在我的机器上,开发机器变得更快。