当前位置:文章中心>技术教程
活动快递 技术教程

阿里云Windows虚拟内存不足问题的处理方法

发布时间:2018-12-06 点击数:100

在 Windows 操作系统中,内核以及应用程序是通过虚拟内存来进行内存管理和使用。微软官方文章简单介绍了虚拟内存的概念。请参考:什么是虚拟内存? 
由于物理内存是有限的资源,Windows 引入了 Paging File (页面文件)实现虚拟内存。以32位操作系统为例,每个进程有自己 2 GiB 专用的用户态虚拟地址空间。当现有的所有进程正在使用的内存超出了可用的 物理内存 时,操作系统将页 (4 KiB 片) 的一个或多个虚拟地址空间移动到计算机的硬盘,而后释放物理内存用于其他用途。在 Windows 系统中,这些”paged out”被移动出物理内存的页存储在一个或多个文件 (Pagefile.sys 页面文件) 分区的根目录中的。

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

问题现象


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

  •   操作系统运行缓慢,甚至出现Hang(夯机),蓝色背景界面的情况
  •   用户本地控制台输入用户名、密码后,无法登录到操作系统,卡在欢迎界面
  •   无法远程桌面,提示”页面文件太小, 无法完成操作”
  •   安装服务失败,例如安装IIS、.NET Framework、FTP提示”资源不足”,或者安装进程卡住
  •   安装三方服务,例如MYSQL服务安装失败,或者安装完毕后无法启动
  •   Windows Update无法更新
  •   系统抛出”虚拟内存不足”的报错,应用程序由于内存分配出现异常关闭的情况。
  •   打开服务器管理器提示“MMC在一个管理单元检测到错误
  •   服务器管理器控制台打开后自动关闭

上述问题具体的报错图请参考附录。

诊断方法


一般而言,出现操作系统虚拟内存不足,有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%, 而根据微软官方说明:
Memory\% Committed Bytes in Use This measures the ratio of Committed Bytes to the Commit Limit—in other words, the amount of virtual memory in use. This indicates insufficient memory if the number is greater than 80 percent. The obvious solution for this is to add more memory.

https://technet.microsoft.com/en-us/magazine/2008.08.pulse.aspx

可能原因


出现上述系统虚拟内存耗尽的情况有如下可能性:

  • 系统物理内存资源不足
  • 系统未配置paging file (页面文件)或者页面文件配置较小
  • 系统存在内存泄露(包含其它各类可能的核心资源的泄露)

例如,某些情况下,正如上图,您可能发现系统仍然显示有可用的物理内存,但是仍然提示虚拟内存不足,这可能是系统Section资源消耗尽导致。微软官方Blog文章  检查系统页面交换文件的使用 也提到类似的情况。

跟进方案


在这种情况下,请尝试如下方案:
方案1: 由于默认ECS没有配置Paging File,请您手工配置paging file,按照如下步骤进行。

http://help.aliyun.com/knowledge_detail/5988580.html?spm=5176.7114037.1996646101.1.PYPA9B&pos=1

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

  1. 应用程序对内存要求高,请增大实例规格,调高ECS的物理内存,同时相应的增加paging file。
  2. 请排查请检查是否有内存泄露, 具体请参考微软官方博客的排查方法:

阅读须知


本文仅供用户使用 ECS Windows 时参考,文中引用的微软官方链接,版权归属微软。请注意文章适用的操作系统范围,以及微软 Windows 产品迭代或者文档未及时更新可能带来的问题,阿里云官方不对引用的微软官方链接内容负责。
如果您对文档内容有疑问或认为文档内容有误,请及时通过文档下方的评价板块反馈给我们,我们将酌情改进修正。

如果问题还未解决,请联系售后技术支持

附录


虚拟内存不足引起的各类异常情况,请参考如下图示。

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. 打开服务器管理器提示“MMC在一个管理单元检测到错误”

MMC?緿.png

12. 启动Tomcat提示虚拟内存不足

哿漀洀挀愀琀治.bmp

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

盿猃治燿.png

14. 安装SQL Server 2008卡住

包儀L Server 2008.png

如有其它疑问,即可咨询阿里云代理商-北京志远天辰小编,会为你免费提供24小时不间断的技术和售后服务。