租号玩代理申请
A-A+

关于Win Server 2008系统内存缓存耗尽导致服务器死机问题,微软怎么说?

2020年11月21日 问题教程 暂无评论 阅读 154 次

起因:

不知道从什么时候开始,网上开始流传一种说法,WS2008系统自带缓存有Bug,然后可能导致服务器内存耗尽而死机!然后网上就出了一些工具解决这些问题!但事实上我一直没能从微软官方资料获得相关说明,自己也没遇到过这种现象,于是一直耿耿于怀……

功夫不负有心人,终于在Google上找到一些资料:

而今天在翻阅云更新产品历史更新时,发现从V2015.4.15.830版本已经会自动修改2008系统自带缓存大小,于是勾起了研究的兴趣。

功夫不负有心人,终于找到微软资料,并已证实2008系统确实存在该问题,但在Windows 7和Windows Server 2008r2版本中已经得到更新,“可以解决已经发现的问题”。

链接:https://support.microsoft.com/zh-cn/kb/976618

以下是链接内容转载,方便访问速度慢的同学查看:

注:下文是由微软机器人翻译,所以有些语句看不懂,我已经对原文做了一些简单修改,以方便大家阅读……

症状:

  • 可用内存是几乎耗尽。
  • 系统文件缓存耗用大量物理 RAM。
  • 存在对磁盘持续且大量的缓存读取请求。
  • 原因:

    在 Microsoft Windows 操作系统中的内存管理使用基于请求的算法。如果任何进程请求,并使用大量内存,进程的工作集 (在物理内存中的内存页面数) 都会增大。如果这些请求持续且未加抑制,进程的工作集将会增长至占用所有的物理内存。在此情况下,其他所有进程的工作集调出到硬盘。这种行为降低了应用程序和服务的性能,因为内存页是连续写入硬盘和从硬盘读取的。

    这种行为同样适用于系统文件缓存的工作集。如果这些请求是连续的且不受控制的,则该进程的工作集将继续增长,直到消耗尽所有物理内存。在这种情况下,所有其他进程的工作集分页到硬盘,被占用的物理内存量不可用于其他进程。

    在 32 位 Windows 操作系统版本早于 Windows Vista,系统文件缓存的工作集是有理论内存限制为小于 1 千兆字节 (GB)。

    在 32 位版本的 Windows Vista 操作系统,动态分配核心资源。

    在 64 位版本的 Windows 操作系统,虚拟地址范围通常通常超过了物理大小。

    解决方法:

    若要变通解决此问题,请使用GetSystemFileCacheSize API 函数和SetSystemFileCacheSize API 函数来设置系统文件缓存的工作集的大小最大值或最小值。

    Microsoft Windows 动态缓存服务是演示如何使用这些 Api 来将这一问题的影响降至最低的一种策略的示例服务。

    安装和使用 Microsoft 动态缓存服务不会排除对 Microsoft Windows 的支持。

    您可以从以下 Microsoft 网站获得服务和源的代码:

    http://www.microsoft.com/downloads/details.aspx?FamilyID=e24ade0a-5efe-43c8-b9c3-5d0ecb2f39af&displaylang=en

    下载小工具使用

    更多信息:

    在 Windows 7 和 Windows Server 2008 R2 操作系统的内存管理算法已更新,可以解决许多早期Windows版本中发现的问题。

    如何确定您的系统是否受影响?

    若要确定您的系统是否受此问题,请安装 SysInternals RamMap 工具。

    微软下载:http://technet.microsoft.com/en-us/sysinternals/ff700229

    运行该工具时,选择使用计数选项。这将显示多个列,以显示当前模式的内存使用情况。单击Active列进行排序使用字节数,并注意总使用量(Total)。如果排列在顶部的使用计数是”Metafile”,并使用了大部分可用的内存。或者您遇到”症状”一节中描述的系统文件缓存问题。可以对其进行如此验证: 即通过使用性能监视器监视的Memory\System Cache Resident Bytes计数器并查看随着时间的推移不断增长的缓存用量。

    图 1。存在问题的 RamMap 示例。

    图 2。正常的 RamMap 示例。

    如果在性能监视器中的Memory\System Cache Resident Bytes计数器显示一段时间的上升趋势,计算机如图 3 所示出现问题。

    图 3。性能监视器输出示例的计算机遇到问题随着时间的推移。

    这篇文章适用于:

    这篇文章中的信息适用于:
    Microsoft Windows XP Professional x64 Edition
    Windows Vista Home Basic
    Windows Vista Home Premium
    Windows Vista Business
    Windows Vista Enterprise
    Windows Vista Ultimate
    Windows Vista Home Basic 64-bit edition
    Windows Vista Home Premium 64-bit edition
    Windows Vista Enterprise 64-bit edition
    Windows Vista Ultimate 64-bit edition
    Microsoft Windows Server 2003 R2 Datacenter Edition (64-Bit x86)
    Microsoft Windows Server 2003 R2 Enterprise Edition (64-Bit x86)
    Microsoft Windows Server 2003 R2 Standard Edition (64-Bit x86)
    Microsoft Windows Server 2003, Datacenter x64 Edition
    Microsoft Windows Server 2003, Enterprise x64 Edition
    Microsoft Windows Server 2003, Standard x64 Edition
    Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
    Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
    Windows Server 2008 Datacenter without Hyper-V
    Windows Server 2008 Enterprise without Hyper-V
    Windows Server 2008 Standard without Hyper-V
    Windows Server 2008 Datacenter
    Windows Server 2008 Enterprise
    Windows Server 2008 Standard
    Windows Server 2008 for Itanium-Based Systems
    Windows Server 2008 R2 Datacenter
    Windows Server 2008 R2 Enterprise
    Windows Server 2008 R2 Service Pack 1
    Windows Server 2008 R2 Standard

    结论:

    1、2008自身缓存问题确实存在,但是2008 r2版本已有更新,可解决一部分问题,但是可能还会有未知问题;

    2、使用微软官方API可以控制缓存大小,以及查询当前缓存大小;只是不知道限制缓存大小会有什么后果;

    3、2012没这种问题;

    4、这个问题可以算是微软的Bug,但也需要有一些“不严谨的程序”来触发,才会产生相应症状,所以我觉得不完全是微软的问题;

    本文作者死性不改,来自死性不改。

    京东空调大促销