![](/img/trans.png)
[英]asp.net mvc 3 with .net 4 and runAllManagedModulesForAllRequests=false
[英]<gcServer enabled="false" /> not working on ASP.Net MVC 5
背景:
我在 Hostgator 中托管了 2 個 Web 應用程序。 其中一種是MVC 5/ EF 6 / .Net 4.6.1,另一種是Web Api2 / EF 6 / .Net 4.6.1
Hostgator 將每個應用程序池的私有內存限制為 250MB,如果達到限制,則應用程序池被回收,如果回收在 5 分鍾內發生 5 次,則應用程序池停止(Rapid-Failure Potection)。
經過幾天的研究,我可以說所有的 DBContext 都被處理掉了。 托管內存約20MB,非托管內存約200MB。
由於我無法進入托管,我創建了一個頁面來檢索一些內存信息,結果如下:
這是控制器中的代碼(因為缺少托管服務器的權限而注釋了兩行):
model.ProcessMem = proc.PrivateMemorySize64;
model.GCMemory = GC.GetTotalMemory(true);
model.IsGCServer = GCSettings.IsServerGC;
//model.CPUCounter = cpuCounter.NextValue();
//model.RAMCounter = ramCounter.NextValue();
我使用 Ant profiler 獲取本地機器上的信息,結果如下:
正如您所看到的,大部分內存是由 .Net 預先分配的(我認為這比分配幾個小部分更有效),但是這些未使用的內存被視為“應用程序池進程內存”的一部分。 我現在 GC 可以在需要時收集它們,但是由於服務器還剩下幾 GB 的內存,並且 GC 不知道應用程序池配置中的內存限制,因此它會忽略它,因為“還不需要”。
題:
是否可以更改設置以使用 Workstation GC? 或者有什么辦法可以限制.Net提前分配的私有內存? 或者有什么辦法可以保持低位?
相關帖子:
如果您使用他們的共享主機,則無法更改您的私人內存限制,您需要要求他們為您更改。 或者為了避免上述問題,也許您需要升級到更高的計划。 關於您遇到的問題,請先聯系他們的支持
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.