为什么32位应用程序池在IIS中效率更高?[关闭]


12

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

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

为什么32位应用程序池如此高效?为什么应用程序池的默认设置不是32位?

Answers:


16

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

最大的(但不是唯一的),使用64位的优势是能够地址多少更多的内存。如果您的应用程序池使用的内存不超过2或3 GB,并且您并不需要特别地运行64位代码,则可能没有令人信服的理由要求您使用64位。随着技术的进步,芯片制造商正在制造更多的CPU寄存器,尤其是用于64位处理器的CPU寄存器,以提高性能,但总的来说,仅使用更多的位并没有神奇的性能提升。实际上,正如您刚刚看到的那样,情况可能更糟。

64位=艾布拉姆斯坦克

32位= Toyota Prius

一个可以完成更多的工作,但另一个可以通过麦当劳的直通车。


4
我讨厌nitpick,但两者都可以通过麦当劳的直通车。只是这样做而无需撞倒墙壁。
HopelessN00b

3
我讨厌nitpick,但我认为那很大程度上取决于合适的定义!如果我们按照麦当劳的直通车规格定义的“要合适的尺寸和形状”,我​​不会说:)。
GraemeMiller 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.