我一直在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位=丰田普锐斯
人们可以完成更多的工作,但另一个可以通过麦当劳的驱动器完成.