公司最近上线一套系统,运行中发现,SQL Server 2008 R2运行越久,占用内存会越来越大,导致最后不得不重启Sql Server来解决,或者是因为Sql 2008本身内存回收机制做的不够好,所以才只能这么强制回收,已向项目方反馈问题点。
暂时优化方法如下:
1,设置计划脚本,闲时定时重启Sql Server。不得已的选择,如果是生产环境,这样如何得了。
net stop sqlserveragent
net stop mssqlserver
net start mssqlserver
net start sqlserveragent
2,设置AWE内存分配机制。记得以前某个版本启用过AWE,好象效果不好,这样先这样设置上去,观察一段时间。
AWE,address windowsing extensions,这是允许32位应用程序分配64GB物理内存,并把视图或窗口映射到2GB虚拟地址空间的限制。
3,通过定时服务定时检查并自动强制释放内存(但我测试好象几乎没有起作用)。
在SQL Serve Agent-->Jobs-->New Job中新建作业
----自动强制释放内存的SQL脚本
DECLARE @TargetMemory decimal(19,2),@TotalMemory decimal(1