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

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

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

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

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

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

编辑:使用此网站衡量您的网站性能http://www.websiteoptimization.com/services/analyze/
http://www.websitepulse.com/

你在web.config中检查过debug = false吗?

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

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

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

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

从阅读所有建议,似乎没有任何工作,开始从您的网站,一点一点地采取代码,并看看它如何影响时间。 一次删除大约10行代码或HTML,看看是否存在巨大差异。

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

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

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

除此之外,我想不出为什么你的网站在生产上比在开发中慢。

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

你需要减少变量。

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

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

关于我的开发机器和生产机器的性能差异,我的头撞在墙上很长一段时间之后,我终于屈服于我一直深深感受到处理器实际上比你更重要的感觉认为。

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

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

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