簡體   English   中英

IIS7.5中x64進程的內存限制

[英]memory limit for x64 process in IIS7.5

Windows Web Server 2008 R2(x64)和.Net Framework 4.5

它是一個經典的ASP.Net網站(不是一個Web項目,代碼在App_Code目錄中,並在網站啟動時編譯)

它取決於/ Bin目錄中的許多引用DLL。 對於那些我有源代碼的DLL,我將其編譯為“x64”平台。

我有一些其他沒有源代碼的DLL(mysql.data.dll / etc),它們編譯為“Any CPU”。 我在EditBin.exe中修改它們以確保在其PE頭中指示IMAGE_FILE_LARGE_ADDRESS_AWARE標志。

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

除非設置了IMAGE_FILE_LARGE_ADDRESS_AWARE,否則x64進程不能使用超過2GB的內存。

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

我不知道你是否真的可以“看到內存限制”明確聲明(假設你不相信你引用的MS自己的文檔),除了親自動手並深入研究IIS和/或ASP.NET源代碼。

話雖這么說,您可以嘗試對網站進行壓力測試,並監控內存消耗(通過Task ManagerProcess Monitor ),看它是否超過2GB。 我建議使用tinygetIIS 6資源工具包的一部分 ,它仍然可以與IIS 7一起使用

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

您必須使用循環和線程計數來嘗試將其超過2GB。 當你接近大約1.4GB的物理和虛擬專用字節組合時,我希望看到一個System.OutOfMemoryException 您可能希望在站點本身中創建壓力測試功能, 僅用於測試目的 ,這將通過使用與良好實踐完全相反的方式幫助您達到此限制。 您可以在此處閱讀有關導致System.OutOfMemoryException的內容的更多信息,然后執行他們建議的操作。 例如,添加一個只在非常大的循環中連接字符串的測試方法。

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

不過,根據您的鏈接,您應該能夠至少解決8GB的問題。

請記住,強制執行IMAGE_FILE_LARGE_ADDRESS_AWARE與您的情況無關。 您可以將所有組件編譯為“任何CPU”,唯一檢查的標志是可執行文件的標志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM