Windows虚拟内存不足问题的处理

背景信息

在 Windows 操作系统中,内核以及应用程序是通过虚拟内存来进行内存管理和使用。

由于物理内存是有限的资源,Windows 引入了 Paging File (页面文件)实现虚拟内存。以32位操作系统为例,每个进程有自己 2 GB 专用的用户态虚拟地址空间。当现有的所有进程正在使用的内存超出了可用的物理内存时,操作系统将页(4 KB 片)的一个或多个虚拟地址空间移动到计算机的硬盘,而后释放物理内存用于其他用途。在 Windows 系统中,这些"paged out"被移动出物理内存的页存储在一个或多个文件(Pagefile.sys 页面文件)分区的根目录中的。

相比于Linux系统,Windows系统由于图形化界面操作相对容易而受到许多用户的青睐,在购买ECS实例时,需要至少1G内存才能选择Windows系统,于是大部分用户就选择1G内存。这1G内存对于系统运行来说是足够了,但是再配置环境、安装更多软件后就会出现内存不足的情况。

虚拟内存不足引发的问题现象

一般而言,当系统缺少虚拟内存会引起很多问题,包含但不限于以下情况:

1. 远程登录显示蓝屏

.png

2. 远程登录提示页面文件太小

℃.png

3. 控制台连接管理终端登录服务器卡在欢迎页面

盿.png

4. 安装IIS提示资源不足

IIS .png

5. 安装.NET Framework、FTP时提示系统资源不足

.net frameworkFTP猃.png

6. Windows 2008一键安装包安装Mysql时错误以及安装完成后Mysql无法启动

洅礀猀焀氀.JPG

7. 其他方法安装Mysql卡住

mysql.png

8. 安装wamp后,不能启动wampmysqld服务

眅愀洀瀀仿矿愀洀瀀洀礀猀焀氀搀.jpg

9. 添加角色时提示页面文件太小,无法完成操作

毿℃狿.jpg

10. 服务器管理器控制台打开后自动关闭

.jpg

11. 连接管理终端出现错误提示框“您的系统虚拟内存不足”

盿猃治燿.png

诊断方法

一般而言,出现操作系统虚拟内存不足,有2种方法检查。

方法1:检查系统日志

打开事件查看器(运行->eventvwr), 在系统日志中发现"Resource-Exhaustion-Detector"报出的2004 错误,例如:

Windows 成功诊断出虚拟内存不足的情况。以下程序使用了大部分虚拟内存: mysqld.exe (1320) 使用了 2801614848 字节;svchost.exe (808) 使用了 422494208 字节;tomcat8.exe (2744) 使用了 336797696 字节。

方法2: 检查任务管理器

任务管理器中发现检查已提交内存与虚拟内存的比例。%Commited Bytes In Use 等于已提交虚拟内存/虚拟内存上限, 该图中 (3790/4093) 已经超过80%,根据微软官方说明当“已提交虚拟内存/虚拟内存上限”超过80%时表示虚拟内存不足。

解决方案

在这种情况下,请尝试如下方案:

方案1:由于默认ECS没有配置Paging File,可手工配置Paging File。

方案2: 如果配置Paging File后,仍然出现内存不足情况,有2种可能。

  1. 应用程序对内存要求高,请增大实例规格,调高ECS的物理内存,同时相应的增加Paging File。
  2. 请排查请检查是否有内存泄露, 具体请参考微软官方博客的排查方法:内存问题排错概要-第一部分、内存问题排错概要-第二部分。
本文档内容整理自移动云官方帮助中心(查看原文),仅供参考。