2012-04-03 23 views
4

我已經遷移一個ASP.NET v4.0的應用程序下的Win2008服務器的x64操作系統上運行的新服務器。由於在應用程序池設置爲「啓用32位應用程序」= False(應爲x64 IIS上的默認設置)時,遷移的asp.net應用程序似乎沒有問題,因此我將其保留爲64位模式。ASP.NET 4.0的工作進程消耗的64位5倍更多的內存相比,32bit的

然後,事實上,該用戶的會話被中斷,很多時候,因爲工作進程相當快超過了其虛擬內存限制。由於這個原因,我只用一個修改的設置測試了相同的應用程序和相同的應用程序池 - 我將「啓用32位應用程序」切換爲True以使其以「WOW64」模式運行;其他的一切都保持原樣。我使用絕對相同的用戶工作場景比較了兩種模式下工作進程消耗的內存量,結果令我震驚:

  • 工作負載消耗約爲150MB,而在WOW 64 32位模式
  • 運行和相同的工作量會消耗「默認」的64位工作進程模式大約800MB。

我曾預料過,工作進程可能會在64位模式下消耗更多內存,但這種差別太大了。

如此巨大的內存的影響纔算正常?是否有可能以某種方式減少/修復它?

+0

我們看到了類似的東西 - 見http://support.microsoft.com/kb/912891。不過,如果是這樣的話,我會很驚訝。 – dash 2012-04-03 12:43:59

+0

任何非託管代碼,第三方庫?看起來你有x內存泄漏**,因爲你一遍又一遍地得到回收。 – Aliostad 2012-04-03 12:45:39

+0

@dash有趣。但是,這隻適用於.NET 2.0。 – Aliostad 2012-04-03 12:46:54

回答

5

更多的調查之後,似乎就沒有記憶的問題。新的服務器只是有更多的內存和一個64位操作系統的應用程序池運行時,簡單地允許分配更大的內存資源。它看起來像是一個內存泄漏,但是從一定數量的分配RAM開始,進程停止消耗額外的內存,它似乎根本不是內存問題。感謝所有respondees ..

+0

您使用哪些工具進行故障排除? – Kiquenet 2016-08-08 09:40:56