Asp.Net運行于32/64模式下的性能差異
項目使用的是Oracle數據庫,.Net使用Odac對數據庫進行訪問。在官方下載Odac時會讓你選擇是下載32位的還是64位的。這會直接影響到網站的運行模式。目前我們使用的是32位的,那么布署時,需要將應用程序池的啟用32位設置為True。
那么,對于網站來講,是32位模式性能更好,還是64位性能更好呢?
我沒有動手親自試驗,而是在網上查了查,在這篇文章里,提問者進行了多次性能測試,并將結果匯總為圖表。可以看到,Asp.Net 2.0 在32位操作系統下運行于32位模式下性能最好,Asp.Net 4.0 在64位操作系統下運行于32位模式下其次。而我之前想到的Asp.Net 4.0在64位操作系統下運行于64位模式下性能居然是最差的!
文章里談了若干個理由,我覺得也很好理解,64位相對于32位來講,最大的優勢是可訪問內存的擴大,這對于內存敏感型的程序絕對是天大的好消息,比如數據庫,緩存系統等。但對于Cpu敏感型的應用來講,比如IIS,小指針能夠帶來更高的命中率(smaller pointers mean less memory needed for a specific set of instructions which means better cache hit ratios),進而32位能帶來更高的性能。
文章里所談論的數據都是基于Windows 2003 + IIS6的,文章的最后也提到了從IIS7開始,兩者之間沒有太多的差別了。
之后我與一個朋友交流了一下,他們公司正常情況也都是運行于32位模式下,從經驗來講在32位下w3wp進程內存使用量如果超過了800M,則會產生嚴重的性能問題。如果程序質量實在太差,才考慮使用64位模式,此時內存使用上限可以到1.5G。
PS
VS2012默認啟用的是32位的IISExpress,如果想使用64位的,需要在運行窗口執行以下語句,然后重啟VS即可。
reg add HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\WebProjects /v Use64BitIISExpress /t REG_DWORD /d 1
參考:
ASP.NET performance decrease between 32bit/64bit server
What are the pros and cons of running IIS as 32bit vs 64bit on a 64bit OS?
Configure Visual Studio 2012 to use 64 bit version of IIS Express

浙公網安備 33010602011771號