摘要:[Q&A]ASP.NET出現的System.OutOfMemoryException問題
最近將舊網站移到全新的主機上面,發現網站執行一段時間偶爾會出現System.OutOfMemoryException
(不知道那裡把記憶體耗盡的...),還導致網站無法對外服務,在請教谷歌大神後,
主要原因是在Windows Server中預設的GC(Garbage Collection)機制為Server Mode(伺服器模式):
一顆CPU核心就分配一個GC Heap(堆積),如果為多核心CPU則就分配多個GC Heap,
這樣子就容易造成記憶體不足,解決的方式如下:
- 1.打開%WINDIR%\Microsoft.NET\Framework\v2.0.50727\Aspnet.config 檔案,另外如果是.NET 1.1 則要修改 %WINDIR%\Microsoft.NET\Framework\v1.1.4322\Aspnet.config檔案。
- 2.只需在<runtime>...</runtime>中加入<gcServer enabled="false" />即可啓動GC Heap Workstation Mode(工作站模式),簡單來說就是多核心CPU使用同一個GC Heap以節省記憶體。
以上就是這麼簡單,就可以擺脫不定時發生「網站無法對外服務」的窘境!
Ref:
解決 ASP.NET 中 System.OutOfMemoryException 的問題