为什么32位应用程序池在IIS中更有效?

我一直在IIS中使用两个不同的ASP.NET Web应用程序运行负载测试.测试使用5,10,25和250个用户代理运行.在带有8 GB RAM的 Windows 7 Ultimate x64的盒子上进行测试.运行IIS和负载测试项目的同一个框.

我做了很多次运行,数据非常一致.对于每个负载,如果我在应用程序池中将“启用32位应用程序”设置为True,则会看到较低的“平均页面时间(秒)”和较低的“平均响应时间(秒)”.负载越高,差异越明显.在非常高的负载下,如果应用程序池是64位,则Web应用程序开始抛出错误(503),但如果设置为32位,它们可以保持同步.

为什么32位应用程序池的效率更高?
为什么32位应用程序池的认值不是?

解决方法

64位内存指针和其他相关数据结构是32位内存指针的两倍.此外,每次在切换模式时必须访问32位代码或DLL时,64位工作线程将受到惩罚. (研究WoW64和thunking.)

使用64位的最大(但不是唯一)优势是能够处理更多内存.如果您的应用程序池不使用超过2或3千兆字节的内存,并且您不需要特别需要运行64位代码,那么您可能没有令人信服的理由让您使用64位.随着技术的进步,芯片制造商正在为64位处理器制造额外的cpu寄存器,以提高其性能,但一般来说,仅使用更多位就没有神奇的性能提升.事实上,正如你刚刚目睹的那样,情况会更糟.

64位=艾布拉姆斯坦克

32位=丰田普锐斯

人们可以完成更多的工作,但另一个可以通过麦当劳的驱动器完成.

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...