本文介紹Windows Server 2003/2008系統的ECS實例虛擬內存不足導致的問題及解決方案。
問題現象
一般而言,Windows Server 2003/2008系統的ECS實例缺少虛擬內存時會引起很多問題,包含但不限于如下現象:
操作系統運行緩慢,甚至出現宕機,遠程桌面連接實例時出現藍色背景界面。
VNC連接實例時輸入用戶名、密碼后,無法登錄到操作系統,卡在歡迎界面。
無法使用遠程桌面連接實例,提示頁面文件太小,無法完成操作錯誤信息。
安裝服務失敗,例如安裝IIS、.NET Framework、FTP提示資源不足,或者安裝進程卡住。
安裝三方服務,例如MySQL服務安裝失敗,或者安裝完畢后無法啟動。
Windows Update無法更新。
系統提示虛擬內存不足錯誤信息,應用程序由于內存分配出現異常關閉的情況。
打開服務器管理器時,提示MMC在一個管理單元檢測到錯誤,請卸載此管理單元。
服務器管理器控制臺打開后自動關閉,提示Microsoft管理控制臺已停止工作。
上述問題具體的報錯圖請參見常見虛擬內存不足問題現象。
問題原因
出現系統虛擬內存耗盡的可能有以下原因。
系統物理內存資源不足。
系統未配置Paging File(頁面文件)或者頁面文件配置較小。
系統存在內存泄露,即包含其他各類可能的核心資源泄露。
在Windows操作系統中,內核以及應用程序是通過虛擬內存來進行內存管理和使用。由于物理內存是有限的資源,Windows引入了Paging File(頁面文件)實現虛擬內存。以32位操作系統為例,每個進程有自己2 GiB專用的用戶態虛擬地址空間。當現有的所有進程正在使用的內存超出了可用的物理內存時,操作系統將頁(4 KiB)的一個或多個虛擬地址空間移動到計算機的硬盤,而后釋放物理內存用于其他用途。在Windows系統中,這些被移動出物理內存的頁(paged out)存儲在一個或多個文件(Pagefile.sys頁面文件)分區的根目錄中。
相比于Linux系統,Windows系統由于圖形化界面操作相對容易而受到許多用戶的青睞,在購買ECS實例時,需要至少1 GiB內存才能選擇Windows系統,1 GiB內存對于系統運行來說是足夠了,但是在配置環境、安裝更多軟件后就會出現內存不足的情況。
解決方案
步驟一:檢查內存不足問題
出現操作系統虛擬內存不足問題時,您可以通過檢查系統日志或任務管理器查看。
方法一:檢查系統日志
遠程連接Windows Server 2003/2008系統的ECS實例。
具體操作,請參見連接方式概述。
打開運行窗口,輸入eventvwr.exe,單擊確定。
在事件查看器頁面,選擇Windows日志>系統。
在系統日志中找到事件2004,Resource-Exhaustion-Detector的系統事件。
單擊該事件,即可查看虛擬內存不足事件的具體信息。
具體信息如下所示,表示mysqld.exe占用虛擬內存較多,
方法二:檢查任務管理器
遠程連接Windows Server 2003/2008系統的ECS實例。
具體操作,請參見連接方式概述。
右鍵單擊任務欄,選擇啟動任務管理器(k)。
在Windows 任務管理器頁面,單擊性能,查看已提交內存與虛擬內存的比例。
如下圖所示,提交(MB)=已提交虛擬內存/虛擬內存上限,即圖中3790/4093,已經超過80%,根據微軟官方文檔說明,系統內存不足,需要增加更多的內存。
步驟二:處理內存不足問題
出現內存不足問題時,請嘗試以下方案解決問題:
方法一:由于默認系統沒有配置Paging File,請您手動配置Paging File。具體操作,請參見如何配置Windows系統的虛擬內存。
方法二:如果配置Paging File后,仍然出現內存不足情況,有以下2種可能。
應用程序對內存要求高,請升級實例規格,調高ECS的物理內存,同時相應的增加Paging file。具體操作,請參見升降配方式概述。
請排查請是否有內存泄露,具體操作,請參見如下微軟官方博客的排查方法。
常見虛擬內存不足問題現象
虛擬內存不足引起的各類異常情況,如下所示。
遠程登錄顯示藍屏。
遠程登錄提示頁面文件太小。
控制臺連接管理終端登錄服務器卡在歡迎頁面。
安裝IIS提示系統資源不足。
安裝.NET Framework、FTP時提示系統資源不足。
Windows 2008一鍵安裝MySQL安裝包時錯誤以及安裝完成后MySQL無法啟動。
其他方法安裝MySQL卡住。
安裝WAMP后,啟動wampmysqld服務時,提示在本地計算機無法啟動wampmysqld服務。
添加角色時,提示頁面文件太小,無法完成操作。
打開服務器管理器后自動關閉,提示Microsoft管理控制臺已停止工作。
打開服務器管理器時,提示MMC在一個管理單元檢測到錯誤,請卸載此管理單元。
啟動Tomcat時提示Windows-虛擬內存不足。
使用VNC遠程連接實例時,提示“您的系統虛擬內存不足”錯誤信息。
安裝SQL Server 2008安裝卡住。