ASP.NET性能在32位/ 64位服务器之间降低

目前,我们正在将32位生产服务器升级到更强大的64位服务器,同时升级到ASP.NET 4.但是,在进行轻负载testing时,我们似乎正在降低性能。

我已经创build了一个简单的负载testing,用20个用户的恒定负载执行一些简单的用例,并比较结果:

页面响应

正如您所看到的,性能最高的configuration是使用ASP.NET 2.0的现有32位服务器。

您可以看到,通过在64位计算机上以32位模式运行IIS,与现有的32位服务器相当,但在64位服务器上以64位模式运行IIS时,性能明显较差。 我不确定这是为什么,因为新的服务器更好。

由于某种原因,我每次用64bit的IIS运行testing,一开始就有一个大的峰值,然后平衡,但响应时间比32bit还要长。 当我以32位模式运行IIS时,尖峰消失。

64位秒杀

请注意,应用程序池/应用程序没有在testing之间重新启动,但尖峰一直在那里,响应高于其他configuration。

所以 – 我的问题是:有没有人知道这是为什么? 有没有我需要设置的configuration设置? 有没有人有一些关于我如何能够缩小什么导致差异的指针?

当前生产服务器:Win Server 2003 – 32bit – IIS6

新服务器:Win Server 2003 R2 – 64位 – IIS6

根据文档MS重新启动64位服务器上运行的32位应用程序池作为一个Web应用程序不应该使用更多的内存无论如何(内部)。

32位应用程序总是更高性能 – 更小的指针意味着更less的内存需要一组特定的指令,这意味着更好的caching命中率。

64位进程只有有限的意义 – 当一个进程真的需要更多的内存。 如果你保持你的web前端做的(前端)没有理由它需要那么多的内存;)

最重要的是,实际升级到更高性能的版本是有道理的。 IIS6吸引了大量的performance – IIS 7.5是一个很好的,特别是如果你运行ASP.NET /托pipe代码。

我们在Windows 2K3服务器上尝试了这个,得到了同样的结果,当时我不在这里,但是他们用MS的方式在2K3中实现了64Bit .Net(不知道是什么,但是告诉我的人是MVP我会听取他的意见的。)

只是为了让你知道,如果你转移到Win2K8,你可能会看到与我们在这里的服务器一样的事情,并得到相同的性能问题。 从我已经被告知和一点点阅读利用64位.Net的build议使用集成pipe道( http://msdn.microsoft.com/en-us/magazine/cc135973.aspx

对不起,这不能回答你的问题,但我想我会让你知道,你不是唯一一个看到这个问题。