阿里云服务器Windows虚拟内存不足怎么办?
在 Windows 操作系统中,内核以及应用程序是通过虚拟内存来进行内存管理和使用。
由于物理内存是有限的资源,Windows 引入了 Paging File (页面文件)实现虚拟内存。相比于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种可能。
- 应用程序对内存要求高,请增大实例规格,调高ECS的物理内存,同时相应的增加paging file。
- 请排查请检查是否有内存泄露
阿里云服务器Windows虚拟内存设置:
打开我的电脑,在计算机上右键,属性。高级系统设置,高级,性能,设置。高级,虚拟内存,更改。
接下来你应该会改了,改完记得点下设置,才会生效。