技术分享 Windows虚拟内存不足问题的处理(服务器) [复制链接]

技术中心 26980 0 2018-6-12 15:35:03
本帖最后由 皇阿玛丶 于 2018-6-12 15:52 编辑

在 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 错误,例如:
QQ截图20180612151209.png
Windows 成功诊断出虚拟内存不足的情况。以下程序使用了大部分虚拟内存: mysqld.exe (1320) 使用了 2801614848 字节;svchost.exe (808) 使用了 422494208 字节;tomcat8.exe (2744) 使用了 336797696 字节。

方法2: 检查任务管理器
任务管理器中发现检查已提交内存与虚拟内存的比例。
QQ截图20180612151219.png
%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.
(野生翻译:如果比例超过80%,说明虚拟内存不足)
https://technet.microsoft.com/en-us/magazine/2008.08.pulse.aspx

可能原因:
①系统物理内存资源不足
②系统未配置paging file (页面文件)或者页面文件配置较小
③系统存在内存泄露(包含其它各类可能的核心资源的泄露)
④某些情况下,可能系统仍然显示有可用的物理内存,但是仍然提示虚拟内存不足,这可能是系统Section资源消耗尽导致。
https://blogs.technet.microsoft.com/apgceps/2012/01/24/47/

处理方案:
方案1: 由于默认没有配置Paging File,请您手工配置paging file,可按照参考下列链接。
http://www.583go.com/article-2223-1.html

方案2: 如果配置Paging File后,仍然出现内存不足情况,有2种可能。
            ①应用程序对内存要求高,请增大实例规格,调高ECS的物理内存,同时相应的增加paging file。
            ②请排查请检查是否有内存泄露, 具体请参考微软官方博客的排查方法:
                检查系统页面交换文件的使用:https://blogs.technet.microsoft.com/apgceps/2012/01/24/47/
                内存问题排错概要 – 第一部分:https://blogs.technet.microsoft. ... 11186623.2.8.4Hd0BT
                内存问题排错概览 – 第二部分:https://blogs.technet.microsoft. ... 11186623.2.9.4Hd0BT

虚拟内存不足的其他表现形式(包括但不限于):
1. 远程登录显示蓝屏
1.png
2. 远程登录提示页面文件太小
2.png
3. 控制台连接管理终端登录服务器卡在欢迎页面
3.png
4. 安装IIS提示资源不足
4.png
5. 安装.NET Framework、FTP时提示系统资源不足
5.png
6. Windows 2008一键安装包安装Mysql时错误以及安装完成后mysql无法启动
6.png
7. 其他方法安装Mysql卡住
7.png
8. 安装wamp后,不能启动wampmysqld服务
8.png
9. 添加角色时提示页面文件太小,无法完成操作
9.png
10. 服务器管理器控制台打开后自动关闭
10.png

原帖地址:https://help.aliyun.com/knowledge_detail/41046.html



您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 29065 个
  • 话题数: 9634 篇
  • 巅峰数: 5500 人