2013-02-27 72 views
3

的Windows Web服務器2008 R2(x64)的& .Net框架4.5內存限制x64的過程IIS7.5

這是一個經典的ASP.Net Web站點(不是Web項目,代碼爲App_Code文件目錄並在網站正在啓動時編譯)

而且它取決於/Bin目錄中的許多參考DLL。 對於那些我有源代碼的DLL,我將它們編譯爲「x64」平臺。

我還有一些沒有源代碼的DLL(mysql.data.dll/etc),它們被編譯爲「任何CPU」。 我在EditBin.exe中修改它們以確保IMAGE_FILE_LARGE_ADDRESS_AWARE標誌在其PE標頭中指示。

根據此表:除非IMAGE_FILE_LARGE_ADDRESS_AWARE設置 http://msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspx#memory_limits

64過程中不能使用超過2GB的內存。

如何驗證它是否有效? 有什麼地方可以看到運行x64進程的內存限制嗎?

+0

+1使我能夠替代運行在x64操作系統上的32位應用程序的/ 3GB開關,而不必跳到4GB。 – 2016-03-03 06:01:44

回答

0

我不知道你是否真的可以「明確地看到內存限制」(假設你不相信MS引用的自己的文檔),除非你親自動手並挖掘到IIS和/或ASP .NET源代碼。這就是說,你可以嘗試壓力測試網站,並監測內存消耗(通過Task ManagerProcess Monitor),看看它是否超過2GB。我會推薦tinygetIIS 6 Resource Kit,其中can still be used with IIS 7的一部分。

tinyget -svr:localhost -uri:/<your site> -loop:200 -threads:20

你必須用循環和線程數打,試圖超過2GB推動它。當您接近大約1.4GB的物理和虛擬專用字節時,我預計會看到一個System.OutOfMemoryException。您可能希望在網站本身創建一個壓力測試功能,僅用於測試目的,當然只有,這可以幫助您達到這個極限,通過使用恰好相反的良好做法。你可以閱讀更多關於什麼會導致System.OutOfMemoryException的問題here,然後做他們推薦的事情。例如,添加一個只在一個非常大的循環中連接字符串的測試方法。

0

嘗試從sysinternals here procexp。此應用程序可以監視.NET特定的指標。

儘管如此,根據您的鏈接,您應該能夠解決至少8GB的問題。

請記住,在您的情況下強制執行IMAGE_FILE_LARGE_ADDRESS_AWARE是無關緊要的。您可以將所有組件編譯爲「任何CPU」,唯一檢查的標誌是可執行文件的標誌。

+0

我沒有一個主要可執行文件,但它是一個ASP。Net網站,代碼在運行時編譯 – 2013-02-28 03:56:58

+0

我試過procexp,它沒有幫助,對於w3wp.exe進程,它沒有顯示.NET columnes。 – 2013-02-28 04:41:11

+0

你是否右鍵單擊w3wp.exe進程並顯示其屬性?性能標籤應該會爲您提供您正在查找的指標。或者,也許我不明白你在找什麼? – Seb 2013-02-28 12:39:25