首页 > 代码库 > windows server 2008 大量拷贝后释放内存
windows server 2008 大量拷贝后释放内存
管理的服务器中有一台windows 2008,这台服务器最近每天都会拷贝几十万的图片,拷贝量非常大,维护时发现每次拷贝完,操作系统的内存使用都会接近100%,导致没有办法进行其它操作,前几次都通过下班后重启服务器解决,今天仔细查了一下,找到了问题的原因
问题描述:
server 2008 r2系统会在进行大量IO操作时,占据大量内存资源,直至内存占满,从而导致系统运行速度变慢。
相关现象:
1. 内存占用率90%以上(即是是64G内存,也会占用63.5G)
2. 资源管理器中所有进程内存和较低(约10G)
3. 通过RAMMAP可以看到Mapped File一项数值很高。
产生原因:
Server2008 r2会尽量使用内存来进行文件缓存,从而提高相应文件的读写速度,然而,却没有设置一个默认的极限值(属于windows系统的问题)
解决方法:
1. 暂时解决策略:利用RAMMAP的empty system working set,可以使得文件缓存释放掉。具体如图所示。缺点是之后如果继续进行IO操作,文件缓存还会一直增加。
2. 更好的解决策略:强制设置windows系统文件缓存大小,使得其不会占用大量的内存。缺点是每次重启都需要重新设置。
如图所示,使用RAMMAP可以使得文件缓存完全释放,但是后期会重新增加直至填满。
使用SetSystemFileCacheSize可以使得文件缓存得到有效控制。
相关软件下载:
SetSystemFileCacheSize
RAMMAP
参考资料:
http://social.technet.microsoft.com/wiki/contents/articles/6925.how-to-prevent-filecache-to-eat-up-all-the-ram.aspx
本文出自 “徐三金那些年混IT的事” 博客,请务必保留此出处http://xu3jin.blog.51cto.com/2261216/1529705