本文介绍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安装卡住。