Iis

為什麼 32 位應用程序池在 IIS 中更高效?

  • June 9, 2014

我一直在 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 位對應資料結構的兩倍。此外,64 位工作執行緒在每次切換模式時必須訪問 32 位程式碼或 DLL 時都會受到懲罰。(研究 WoW64 和 thunking。)

使用 64 位的最大(但不是唯一)優勢是能夠定址更多記憶體。如果您的應用程序池使用的記憶體不超過 2 或 3 GB,並且您不需要特別執行 64 位程式碼,那麼您可能沒有令人信服的理由讓您使用 64 位。隨著技術的進步,晶片製造商正在製造額外的 CPU 寄存器,特別是針對 64 位處理器以提高其性能,但一般來說,僅僅使用更多位並沒有神奇的性能提升。事實上,正如您所看到的,情況可能會更糟。

64 位 = 艾布拉姆斯坦克

32 位 = 豐田普銳斯

一個可以完成更多的工作,但另一個可以通過麥當勞的得來速。

引用自:https://serverfault.com/questions/495112