mhe*_*384 12 iis asp.net application-pools load-testing
我一直在 IIS 中使用两个不同的 ASP.NET Web 应用程序运行负载测试。测试使用 5、10、25 和 250 个用户代理运行。在具有 8 GB RAM、Windows 7 Ultimate x64 的盒子上进行测试。运行 IIS 和负载测试项目的同一个框。
我跑了很多次,数据非常一致。对于每次加载,如果我在应用程序池中将“启用 32 位应用程序”设置为 True,我会看到较低的“平均页面时间(秒)”和较低的“平均响应时间(秒)”。负载越高,差异越明显。在非常高的负载下,如果应用程序池是 64 位的,Web 应用程序开始抛出错误 (503),但如果设置为 32 位,它们可以跟上。
为什么 32 位应用程序池效率如此之高?为什么应用程序池的默认值不是 32 位?
Rya*_*ies 16
64 位内存指针和其他相关数据结构的大小是 32 位对应的两倍。此外,64 位工作线程每次在切换模式时必须访问 32 位代码或 DLL 时都会受到惩罚。(研究 WoW64 和 thunking。)
最大的(但不是唯一的),使用64位的优势是能够地址多少更多的内存。如果您的应用程序池使用的内存不超过 2 或 3 GB,并且您并不特别需要运行 64 位代码,那么可能没有令人信服的理由让您使用 64 位。随着技术的进步,芯片制造商正在特别为 64 位处理器制作额外的 CPU 寄存器以提高其性能,但一般来说,仅使用更多位并没有神奇的性能提升。事实上,正如你刚刚目睹的那样,情况可能会更糟。
64 位 = 艾布拉姆斯坦克
32 位 = 丰田普锐斯
一个可以完成更多的工作,但另一个可以通过麦当劳的免下车服务。
归档时间: |
|
查看次数: |
8024 次 |
最近记录: |