C# ASP.NET网站在生产服务器上运行缓慢

C# ASP.NET网站在生产服务器上运行缓慢,c#,asp.net,iis,web,C#,Asp.net,Iis,Web,我的问题是,我的ASP.NET网站在生产服务器上运行得比在开发服务器上运行得慢 在我的开发环境中,在120毫秒内执行的页面在服务器上执行需要400毫秒。我用探查器监控了SQL server,在页面上运行的查询只需要400毫秒,在服务器上运行大约只需要50毫秒,因此我确信我的问题不在于SQL server 我的开发机器是带有6GB RAM的Intel I7,生产服务器是带有16GB RAM的2x AMD四核。您是否检查了web.config中的debug=false 服务器是64位的吗? 尝试为应

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

在我的开发环境中,在120毫秒内执行的页面在服务器上执行需要400毫秒。我用探查器监控了SQL server,在页面上运行的查询只需要400毫秒,在服务器上运行大约只需要50毫秒,因此我确信我的问题不在于SQL server


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

您是否检查了web.config中的debug=false

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


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

set Trace=“true”(您的SQL server是否在另一台正在生产的服务器上,但本地正在开发?

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

这是您在服务器上唯一的网站吗?16Gbs的内存非常好,但如果同一台服务器上有许多流行的网站,它们可能会消耗资源和CPU时间

除此之外,我想不出任何理由来解释为什么你的网站在制作上比在开发上慢


你检查了索引吗?它们都在服务器上吗?

< P>有一点你可以考虑你的网站的性能改进。

  • 设置debug=false
  • 除非需要,否则关闭跟踪
  • 如果不需要,请关闭会话状态。 ASP.NET自动管理会话状态。但是,如果您不需要会话,禁用它将有助于提高性能
  • 在不需要时禁用ViewState
  • 避免频繁往返数据库
  • 避免抛出异常。 异常是处理应用程序逻辑中发生的错误的最佳方法。但是,引发异常是一项成本高昂的资源,必须避免。请使用特定的异常,并尽可能减少使用,以避免资源开销
  • 使用缓存来提高应用程序的性能
  • 使用Finally方法杀死资源
  • 编辑: 使用此网站测量您的网站性能

    您需要减少变量

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

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

    等等。

    从阅读所有建议开始,似乎什么都不起作用,开始一点一点地从你的网站中删除代码,看看这会对时间产生什么影响。一次删除大约10行代码或HTML,看看是否有巨大的差异


    否则,这可能与IIS有关,很抱歉,我不是IIS大师。

    在我的头撞到墙上很长一段时间后,关于我的开发机器和生产机器的性能差异,我终于屈服于我内心深处的感觉,处理器实际上比你重要得多想想看

    我从基于AMD的解决方案改为基于Intel的解决方案(Xeon!),获得了.3GHz和更快的磁盘

    我也获得了性能提升,而不是像我的开发机器那样慢x3,它现在降到了像x0.75这样的速度——显然仍然不是我的开发机器能够达到的闪电般的速度,但它越来越近了


    在进一步调试的过程中,我注意到大多数性能问题(这并不奇怪)从LINQ到SQL必须编译查询,我觉得奇怪的是,一旦我尝试预编译LINQ查询并在我的两台机器上运行相同的东西,开发机器就变得更快了。

    你是如何测量速度的?HttpModule中的秒表,基本上测得的时间是从查询开始需要多长时间在请求EndRequest事件时。我尝试在服务器上的项目空白页上运行一些测试。1.我设置了一个简单的循环,其中包含一个非常简单的计算,这实际上在服务器上的执行速度比在我的开发机器上快。2.我更改了循环,从类库调用一个函数,从数据库中提取信息se..这在服务器上比较慢。3.我再次更改了它,但这次调用一个与服务器没有交互的函数,在服务器上也比较慢。也许这与我的类库有关?关于如何解决它有什么好主意吗?在第三次测试中,没有与服务器交互,我的意思是没有与数据交互基本。为了澄清,整个网站的速度比示例中使用的一个页面慢。或者说,在开发过程中也是如此,不是吗?我尝试过改变这个值,但没有多大区别。在我的回答中增加了2个选项。我尝试过预编译和复制项目文件,这只是现实第一次运行页面时,y会产生不同。开发和生产都是64位的,不确定32位的经典模式到底是什么意思,但将管道设置为经典会引发一个异常,并出现配置错误,告诉我它找不到我的程序集。我将Enable 32位应用程序更改为TRUE,之前为FALSE,这似乎不是o带来了性能提升,以前的约400ms现在是约300ms,但仍然不是我的开发服务器的120ms。在我的开发机器上也改变了这一点,现在速度更快了,但这也意味着性能上的gab是unc