服务器

位置:IT落伍者 >> 服务器 >> 浏览文章

MSSQL数据库占用内存过大造成服务器死机问题的解决方法


发布日期:2022年03月30日
 
MSSQL数据库占用内存过大造成服务器死机问题的解决方法

使用MSSQL的站长朋友都会被MSSQL数据库吃内存的能力佩服得五体投地一个小小的网站运行若干天之后MSSQL就会把服务器上所有的内存都吃光此时你不得不重新启动一下服务器或MSSQL来释放内存有人认为是MSSQL有内存洩露问题其实不然微软给我们了明确说明:

在您启动 SQL Server 之后SQL Server 内存使用量将会持续稳定上升即使当服务器上活动很少时也不会下降另外任务管理器和性能监视器将显示计算机上可用的物理内存稳定下降直到可用内存降到 MB 为止

仅仅出现这种状态不表示内存洩漏此行为是正常的并且是 SQL Server 缓沖池的预期行为

默认情况下SQL Server 根据操作系统报告的物理内存加载动态增大和收缩其缓沖池(缓存)的大小只要有足够的内存可用于防止内存页面交换(在 MB 之间)SQL Server 缓沖池就会继续增大像在与 SQL Server 分配内存位于相同计算机上的其他进程一样SQL Server 缓沖区管理器将在需要的时候释放内存SQL Server 每秒可以释放和获取几兆字节的内存从而使它可以快速适应内存分配变化

更多信息

您可以通过服务器内存最小值和服务器内存最大值配置选项设置 SQL Server 数据库引擎使用的内存(缓沖池)量的上下限在设置服务器内存最小值和服务器内存最大值选项之前请查阅以下 Microsoft 知识库文章中标题为"内存"一节中的参考信息

HOW TODetermine Proper SQL Server Configuration Settings(确定正确的 SQL Server 配置设置)

请注意服务器内存最大值选项只限制 SQL Server 缓沖池的大小服务器内存最大值选项不限制剩余的未保留内存区域SQL Server 准备将该区域分配给其他组件例如扩展存储过程COM 对象以及非共享 DLLEXE 和 MAPI 组件由于前面的分配SQL Server 专用字节超过服务器内存最大值配置是很正常的有关此未保留内存区域中分配的其他信息请单击下面的文章编号以查看 Microsoft 知识库中相应的文章

PRB在使用大量数据库时可能没有足够的虚拟内存

参考

SQL Server 联机图书;主题"服务器内存最小值和最大值的影响";"内存体系结构";"服务器内存选项";"SQL Server 内存池"

下面我们就来实战如何限制MSSQL内存使用:

第一步:打开企业管理双击进入要修改的MSSQL

第二步:在左侧MSSQL上点击右键选择属性弹出SQL Server属性(配置)对话框

第三步:点击内存选项卡

在这里你会看到MSSQL默认设置为使用最大内存也就是你所有的内存根据你的需要设置它的最大值吧

第五步:设置完毕关闭MSSQL服务再重启配置即可生效!

上一篇:服务器优化——Sysctl、Apache、MySQL

下一篇:sqlserver 多表查询不同数据库服务器上的表