TOP

启用Dynamic Cache Service服务,内存占用率就降到设置的阈值了,服务器不用重启
2020-02-09 11:02:48   字体:【 】  浏览:313次   评论:0
系统环境:
Windows Server 2008 R2 + Sql Server 2008 R2
 
问题描述:
Windows Server 2008 R2系统内存占用率过大,而在任务管理器中各进程内存占用总和都远不到此占用率。
相关现象:
1. 内存占用率90%以上
2. 任务管理器中所有进程内存和较低,远不到90%,有二十多G的内存偏差
 
分析过程:
 
  1. 首先怀疑SQL Server内存占用,但是SQL Server设置了最大内存,且任务管理器中显示的内存占比并没有达到很高,排除此原因
  2. 用RamMap工具查看内存的详细使用情况,发现图元文件(Metafile)占用了二十多G的内存,应该与此有关
 
解决方法:利用RamMap的“清空系统工作集”功能,可以释放内存。

启用Dynamic Cache Service服务,内存占用率就降到设置的阈值了,服务器不用重启

 
图元文件(Metafile):
     Metafile可以理解为系统缓存,Windows server 2008系统中,比如存在大量的文件拷贝等磁盘io操作,系统会自动将其缓存到内存中,这部分被占用的内存在任务管理器的中未体现出来的,所以用户会认为系统的内存占用异常。同时,MetaFile默认是没有限制的,所以系统会无限制占用内存。 但是对于Windows 2012之后,操作系统会自动限制系统缓存的上限从而避免物理内存的耗尽。
    看了图元文件的解释后,发现前两天一直在做转移文件的操作,几百G的大量小文件在不同磁盘中转移,从而导致内存占用过高,符合此解释。至此,问题调查清楚。
 
如下, 是微软官方Blog中介绍修改注册表来限制动态缓存的方法:
Microsoft Windows Dynamic Cache的更新程序,用户可以下载后添加到服务中,通过修改注册表来限制动态缓存的最大值,比如设置上限为200M等,这样系统就可以把作为缓存使用的内存设置了上限值。
具体设置步骤如下:
1. 解压后根据不同系统版本中对应的DynCache.exe文件复制到C:\windows\system32中。
2. 以管理员身份打开命令提示符,执行如下命令添加服务:
      sc create DynCache binPath= %SystemRoot%\System32\DynCache.exe start= auto type= own DisplayName= "Dynamic Cache Service"
3. 回到DynCache文件夹,找到DynCache.reg的注册表文件导入。
4. 打开注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters
5. 右侧找到MaxSystemCacheMBytes,双击它,这里我们选择“十进制”,在数值里输入要限制最大的缓存数(单位是MB),输入800就是限制缓存最大为800MB,输入0为不限制。
6. 到服务中启动DynCache服务。
注:下载的dyncache解压出来是有多几个版本可选的,请选择retail amd64的版本,不要选择ia64(ia64表示安腾的64位处理器版本)。






最近遇到Windows Server 2008服务器内存持续飙升,48G内存用了99%,查看任务管理器的进程,也没发现具体哪个进程用的内存比较大?

于是,在网上找了了一个查看内存的工具RamMap,具体的内容,大家可以到网上仔细看看这篇文章:《解决Windows内存问题的两个小工具RamMap和VMMap》

这个软件大家可以到网上去下载。

通过RamMap工具,发现占用内存是MetaFile这个东西占用的,于是同事提示使用这个工具来限制metafile对内存的使用。

《Windows Server 2008 MetaFile设置占用内存限制》

文章具体内容:

 

   MetaFile可以理解为系统缓存,Windows server 2008系统中,比如存在大量的文件拷贝等磁盘io操作,系统会自动将其缓存到内存中,这部分被占用的内存在任务管理器的中未体现出来的,所以用户会认为系统的内存占用异常。同时,MetaFile默认是没有限制的,所以系统会无限制占用内存。

       目前微软有针对推出一个Microsoft Windows Dynamic Cache的更新程序,用户可以下载后添加到服务中,通过修改注册表来限制动态缓存的最大值,比如设置上限为200M等,这样系统就可以把作为缓存使用的内存设置了上限值。

下载地址: http://www.microsoft.com/en-us/download/details.aspx?id=9258 

具体设置步骤如下:

1. 解压后根据不同系统版本中对应的DynCache.exe文件复制到C:\windows\system32中。

2. 以管理员身份打开命令提示符,执行如下命令添加服务:

      sc create DynCache binPath= %SystemRoot%\System32\DynCache.exe start= auto type= own DisplayName= "Dynamic Cache Service"

3. 回到DynCache文件夹,找到DynCache.reg的注册表文件导入。

4. 打开注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters

5. 右侧找到MaxSystemCacheMBytes,双击它,这里我们选择“十进制”,在数值里输入要限制最大的缓存数(单位是MB),输入800就是限制缓存最大为800MB,输入0为不限制。

6. 到服务中启动DynCache服务。

注:下载的dyncache解压出来是有多几个版本可选的,请选择retail amd64的版本,不要选择ia64(ia64表示安腾的64位处理器版本)。


Tags:启用 DynamicCacheService 服务 内存 占用 降到 设置 服务器 不用 重启 责任编辑:大奶妹
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Apache查看连接数和限制当前的连.. 下一篇apache做反向代理服务器

  • ALTER TABLE zysjyj DROP aid;ALTER TABLE zysjyj ADD aid int(10) NOT NULL FIRST;ALTER TABLE zysjyj AUTO_INCREMENT=10000;ALTER TABLE zysjyj MODIFY COLUMN aid int(10) NOT NULL AUTO_INCREMENT,ADD PRIMARY KEY(aid);

-->

发布者

大奶妹 大奶妹
等级:普通会员
积分:0 个
性别:保密
danai@wwqq.com
55 身份还未认证 邮箱还未认证 手机还未认证 给它发送短消息 搜寻它在服务器发布的全部文章 51

最新文章

网站服务地区

琼中黎族苗族自治县网站建设
湖州市网站建设
唐山市网站建设
保定市网站建设
红桥区网站建设
金山区网站建设
河池市网站建设
伊犁哈萨克自治州网站建设
池州市网站建设
澄迈县网站建设
马鞍山市网站建设
湘潭市网站建设
蓟县网站建设
涪陵区网站建设
清远市网站建设
黄冈市网站建设
深水埗区网站建设
北辰区网站建设
黄石市网站建设
曲靖市网站建设
文山壮族苗族自治州网站建设
铜陵市网站建设

本月热门

相关文章