窗口关闭后,如何将数据库的内存资源怎样释放内存掉

数据库内存不足,如何设置内存管理?-CSDN论坛
数据库内存不足,如何设置内存管理?
部署环境是win2003(内存&8G)&server&mssqlserver2005
C#桌面应用程序与数据库部署同一机器上。
在程序中使用sqlserver2005频繁的连接数据库,过大约80小时后,出现下述情况:
1450&在从服务器接收结果时发生传输级错误。&(provider:&TCP&提供程序,&error:&0&-&系统资源不足,无法完成请求的服务。)
有时间打开本地数据库连接出现,提示&系统内存不足,无法完成请求。
我的程序就是服务器端的程序,频繁的操作数据库,插入或更新,检查程序打开的连接使用完后关闭。
自己觉得是sqlserver2005将内存占满了,所以出现上述情况。具体的原因不是很清楚,请高手指教,谢谢。&
1、&主要设置min&server&memory&&和&max&server&memory&&,如果同台服务器有多台吃内存大户服务,&max&server&memory&给设置一个值稍大的值出来,别让SQL&server把WINDOWS内存都吃完了也别让其他的服务把WINDOWS内存吃完了,这样才会相安无事
2.设置方法可以通过命令方式的,楼上的挺好,还有就是通过SQL&SERVER企业管理器进行:鼠标右键服务器\属性\内存&可以看多最大内存和最小内存设置选项。
控制最大内存是必要的,但是其实即使你不控制,还是会预留256M给os,可以使用性能计数器去看看是否真的内存有压力
参考一下我的文章
一开始&没有设置数据库最大内存值,应用程序打开数据库连接提示系统内存不足,无法完成请求。
后来服务器再加了8G,总共16G内存,操作系统BOOT.INI添加/PAE&设置数据库最大内存值为大约6G,开启AWE。
一周内软件出现两次假死状态。
引用&5&楼&qq&的回复:一开始&没有设置数据库最大内存值,应用程序打开数据库连接提示系统内存不足,无法完成请求。
后来服务器再加了8G,总共16G内存,操作系统BOOT.INI添加/PAE&设置数据库最大内存值为大约6G,开启AWE。
一周内软件出现两次假死状态。你的是32位系统?
是的32位。&Microsoft&Windows&Server&2003&R2&Enterprise&Edition&Service&Pack&1&&
另外&参考你的文章&http://blog.csdn.net/dba_huangzj/article/details/8627000
发现&&Memory:&Available&Mbytes,范围&&平均值15405&MB
其他性能计数器如下&
1.Page/sec&&&&&&&&&&&&&&&范围&0~704&&&&&&&&&平均7
2.Uaage&&&&&&&&&&&&&&&&&&范围&9~9&&&&&&&&&&&平均9
3.Buffer&cache&hit&radio&范围&100-100&&&&&&&平均100
4.Page&life&expectancy&&&范围&&&&平均15897
5.Memoory&grants&pending&范围&0-0&&&&&&&&&&&平均&0&
在此再次感谢。
32位系统虽然开启了AWE/PE啥啥,忘了,但是对内存的使用依旧没那么优秀,如果硬件方面你已经没法改进,比如改64位,那么你就要优化查询,有可能你的查询缺少索引,每次都查询出大量数据,使得需要加载很多数据页到内存中,也有可能一些ad&hoc过多,占用了内存的缓存部分。
我不是十分确定你现在的问题是什么?
你刚开始说“系统资源不足,无法完成请求的服务”,“提示&系统内存不足,无法完成请求。
”&那很明显是AWE吃内存太厉害,后来“&设置数据库最大内存值”后问题解决了是吧?
现在的问题是“一周内软件出现两次假死状态。&”&从描述上来看,跟SQL&SERVER没有直接的联系了,你说的假死应该是hang吧,然后呢?你怎么处理的?
另外,你软件是用什么做的?.NET吗?&&
hang可以通过DUMP内存debug来解决。
另外你在出现hang的时候,你也要监控CPU的利用率,如果是CPU的利用率很低,那你很可能是LOCK或者等待外部的资源,比如SQL&server&,web&service之类。如果CPU的利用率很高,那很可能是软件本身的问题,比如Infinite&loop&,或许GC天频繁,总之要找出root&reason,最好就是DUMP内存来分析。
&引用&9&楼&SQL_Beginner&的回复:我不是十分确定你现在的问题是什么?
你刚开始说“系统资源不足,无法完成请求的服务”,“提示&系统内存不足,无法完成请求。
”&那很明显是AWE吃内存太厉害,后来“&设置数据库最大内存值”后问题解决了是吧?
现在的问题是&从描述上来看,跟SQL&SERVER没有直接的联系了,你说的假死应该是hang吧,然后呢?你怎么处理的?
另外,你软件是用什么做的?.NE……
设置数据库最大内存值后,没有出现系统资源不足,无法完成请求。“一周内软件出现两次假死状态。&”就是软件非常卡,无法进行操作,如查询按钮点不了等。
软件是.net开发的,另外CPU使用率基本平稳波动不大,主要是程序后台频繁的操作数据库,插入或更新操作。
卡的时候profile一下,看看数据库跑什么
长夜漫漫,无心睡眠,只因公司加工资太低无法养家糊口度日。反正横竖都是饿死,我还是把你的问题回答完了再死吧。首先不知道你的这个C#桌面应用程序是做什么用的。把它起起来会占用多少系统资源。但是首先一点系统选择上有点问题。32的最大寻址空间2的32次方也就是4个G。它又把这4G分成两部分其中一部分用于进程本身使用,另一部分供系统使用。咱们分别叫他俩用户模式和内核模式。那你用64位的系统2的64次方那就比这个数值大多了。你的内存就得到了充分的利用。分配起来也更合理。3GB不说了因为上面没有看到你用。他就是把内核模式减少1G,把用户模式添加1G.&看到你上面开启了PAE,windows&server&2003&sp1&不是系统自动开启PAE,你为什么还要手动去配置呀?PAE就是讲系统页表项从4kb增加到8kb,利用多余的空间来将虚拟地址映射到物理内存中多于4GB的部分。虽然windows能识别和管理128GB内存了。但是他的内核模式也翻倍了。AWE也很容易被人误解,他只代表缓冲池中的最大最小内存哦。而不是sqlserver占用的所有内存。比如一个16GB的内存我感觉最大最小内存这只在11GB或12GB比较合适。这样我感觉他才不会应为多页分配,分页(也是系统级别的哦。不是数据库级别的哦,不信你begin&tran&insert&into&tbname&rollback&tran你会问rollback了大量内存却被裁剪。因为分页了。系统向你的数据库要内存了),备份,你的C#桌面应用程序,系统。如果你设置了最大内粗比较大。有开启了AWE,锁定了内存页。我想你的系统,多页分配,分页,备份,C#桌面应用程序,内存就会紧张而且裁剪不掉你的AWE内存。这样系统就因压力过大而出现假死现象。如果我今晚饿不死。祝福我明天找到好工作吧?谢谢。
检查你的程序吧,我以前的一个公司系统也是这样,测试的时候过了一阵子就变得非常慢,最后查明原因,大量的数据库连接没有关闭&导致内存不足
14楼的没有说错,SQLSERVER会自动释放连接对象,你的程序如果没有关闭连接,就会造成内存紧张的情况
看情况,内存能受控的是Data&Buffer
一般给操作系统留2G,假如32G内存,通过max&server&memory设置给sql&server&30G,2G保留个操作系统。
如果服务器上还有其他程序,那还得多留点内存出来。
留名,不懂,楼主找到解决方案了可以分享下,谢谢!
引用&14&楼&xumei_&的回复:检查你的程序吧,我以前的一个公司系统也是这样,测试的时候过了一阵子就变得非常慢,最后查明原因,大量的数据库连接没有关闭&导致内存不足
检查程序结果,程序并非连接(远程连接,记录集)没有关闭释放。程序使用短连接,每次打开本地连接后,主动关闭并释放。个人感觉.net回收机制回收有点慢,然后修改为常连接,情况没明显改观,内存使用依然居高。
后来做个测试,后台开启一个线程从另台机器抽取数据和开启50个线程抽取数据,内存使用一样的。所以,个人认为是数据库一开始就把内存占用。
难道像上面的仁兄讲的,需要换操作系统64位的?
服务器上没有其他什么应用程序,360杀毒除外。
不对,你的思路有问题,
首先3G内存设置,存在一个问题,windows&2003用的是32位系统,那么服务器的虚拟寻址空间只有2G,开启3G设置后,虚拟寻址空间会达到3G,但是这个时候系统的可用内存就变成1G了,这样服务器会面临很大的问题,内存不足。内存不足时,服务器会强制实行工作集剪切。即使你的内存大于4G,那么增加的部分也只是数据库的数据缓存部分。
1、程序服务器和数据库服务器分离。
2、安装64位系统。
谢谢大家,后来使用64位操作系统得到显著改善,另外连接字符串里面加了maxpool=20,minpool=0后&服务器运行平稳。
那是因为你限制连接池最大连接,这样会有问题,如果并发高,最大连接被限制的话,很多请求连接数据库的会话会因为等待而超时。
还有数据库不会一开始就占用内存,实际上数据库在任务管理器中显示的内存都不会超过,1.8G,大部分的内存用作数据缓存,还有,数据库给每个连接会话2MB的内存,会话多了也可能占用过多内存。
数据库有没有DUMP文件?另外数据库错误日志具体的错误代码是什么?701?
学习了,~看来真的多逛逛CSDN了
感觉应用的问题可能性比较大
win2003企业版32位,使用4G以上内存(最多64G)没遇到什么问题
稳定运行了2年的系统突然报这个错误。。难道是内存条的问题?
据我遇到过的情况,其实是代码不够优化,大量的scan、join等导致的
学习了,标记下。
回复SQLServer如何释放内存_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
SQLServer如何释放内存
&&SQLServer如何释放内存
你可能喜欢SqlConnection关闭后的释放问题
[问题点数:80分,结帖人meerio]
本版专家分:158
结帖率 100%
CSDN今日推荐
本版专家分:448837
2017年 总版技术专家分年内排行榜第十2013年 总版技术专家分年内排行榜第八
2017年2月 总版技术专家分月排行榜第三
2018年6月 .NET技术大版内专家分月排行榜第一2018年1月 .NET技术大版内专家分月排行榜第一2017年5月 .NET技术大版内专家分月排行榜第一2017年4月 .NET技术大版内专家分月排行榜第一2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2018年4月 .NET技术大版内专家分月排行榜第二2018年3月 .NET技术大版内专家分月排行榜第二2017年12月 .NET技术大版内专家分月排行榜第二2017年9月 .NET技术大版内专家分月排行榜第二2017年7月 .NET技术大版内专家分月排行榜第二2017年6月 .NET技术大版内专家分月排行榜第二2016年12月 .NET技术大版内专家分月排行榜第二2016年9月 .NET技术大版内专家分月排行榜第二2016年6月 .NET技术大版内专家分月排行榜第二2016年3月 .NET技术大版内专家分月排行榜第二2016年1月 .NET技术大版内专家分月排行榜第二2015年12月 .NET技术大版内专家分月排行榜第二2015年2月 .NET技术大版内专家分月排行榜第二2015年1月 .NET技术大版内专家分月排行榜第二2014年11月 .NET技术大版内专家分月排行榜第二2014年5月 .NET技术大版内专家分月排行榜第二2014年4月 .NET技术大版内专家分月排行榜第二2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
本版专家分:219637
2013年 荣获名人称号
2012年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第七2011年 总版技术专家分年内排行榜第五2009年 总版技术专家分年内排行榜第九
2012年11月 总版技术专家分月排行榜第一
本版专家分:448837
2017年 总版技术专家分年内排行榜第十2013年 总版技术专家分年内排行榜第八
2017年2月 总版技术专家分月排行榜第三
2018年6月 .NET技术大版内专家分月排行榜第一2018年1月 .NET技术大版内专家分月排行榜第一2017年5月 .NET技术大版内专家分月排行榜第一2017年4月 .NET技术大版内专家分月排行榜第一2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2018年4月 .NET技术大版内专家分月排行榜第二2018年3月 .NET技术大版内专家分月排行榜第二2017年12月 .NET技术大版内专家分月排行榜第二2017年9月 .NET技术大版内专家分月排行榜第二2017年7月 .NET技术大版内专家分月排行榜第二2017年6月 .NET技术大版内专家分月排行榜第二2016年12月 .NET技术大版内专家分月排行榜第二2016年9月 .NET技术大版内专家分月排行榜第二2016年6月 .NET技术大版内专家分月排行榜第二2016年3月 .NET技术大版内专家分月排行榜第二2016年1月 .NET技术大版内专家分月排行榜第二2015年12月 .NET技术大版内专家分月排行榜第二2015年2月 .NET技术大版内专家分月排行榜第二2015年1月 .NET技术大版内专家分月排行榜第二2014年11月 .NET技术大版内专家分月排行榜第二2014年5月 .NET技术大版内专家分月排行榜第二2014年4月 .NET技术大版内专家分月排行榜第二2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
本版专家分:158
结帖率 100%
本版专家分:158
结帖率 100%
本版专家分:22382
本版专家分:10
本版专家分:109
匿名用户不能发表回复!|
CSDN今日推荐MSSQL数据库占用内存过大造成服务器死机问题的解决方法
转载 &更新时间:日 19:55:53 & 作者:
有时候我们的服务器使用MSSQL数据库,但如果MSSQL数据库占用内存过大可能导致服务器死机,这里分享下解决方法, 需要的朋友可以参考下
使用MSSQL的站长朋友都会被MSSQL数据库吃内存的能力佩服得五体投地,一个小小的网站,运行若干天之后,MSSQL就会把服务器上所有的内存都吃光,此时你不得不重新启动一下服务器或MSSQL来释放内存,有人认为是MSSQL有内存泄露问题,其实不然,微软给我们了明确说明: 在您启动 SQL Server 之后,SQL Server 内存使用量将会持续稳定上升,即使当服务器上活动很少时也不会下降。另外,任务管理器和性能监视器将显示计算机上可用的物理内存稳定下降,直到可用内存降到 4 至 10 MB 为止。 仅仅出现这种状态不表示内存泄漏。此行为是正常的,并且是 SQL Server 缓冲池的预期行为。 默认情况下,SQL Server 根据操作系统报告的物理内存加载动态增大和收缩其缓冲池(缓存)的大小。只要有足够的内存可用于防止内存页面交换(在 4 至 10 MB 之间),SQL Server 缓冲池就会继续增大。像在与 SQL Server 分配内存位于相同计算机上的其他进程一样,SQL Server 缓冲区管理器将在需要的时候释放内存。SQL Server 每秒可以释放和获取几兆字节的内存,从而使它可以快速适应内存分配变化。 更多信息 您可以通过服务器内存最小值和服务器内存最大值配置选项设置 SQL Server 数据库引擎使用的内存(缓冲池)量的上下限。在设置服务器内存最小值和服务器内存最大值选项之前,请查阅以下 Microsoft 知识库文章中标题为"内存"一节中的参考信息: 319942 HOW TO:Determine Proper SQL Server Configuration Settings(确定正确的 SQL Server 配置设置) 请注意,服务器内存最大值选项只限制 SQL Server 缓冲池的大小。服务器内存最大值选项不限制剩余的未保留内存区域,SQL Server 准备将该区域分配给其他组件,例如扩展存储过程、COM 对象、以及非共享 DLL、EXE 和 MAPI 组件。由于前面的分配,SQL Server 专用字节超过服务器内存最大值配置是很正常的。有关此未保留内存区域中分配的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 316749 PRB:在使用大量数据库时可能没有足够的虚拟内存 参考 SQL Server 联机图书;主题:"服务器内存最小值和最大值的影响";"内存体系结构";"服务器内存选项";"SQL Server 内存池" 下面我们就来实战如何限制MSSQL内存使用: 第一步:打开企业管理双击进入要修改的MSSQL. 第二步:在左侧MSSQL上点击右键,选择属性,弹出SQL Server属性(配置)对话框 第三步:点击内存选项卡. 在这里,你会看到MSSQL默认设置为使用最大内存,也就是你所有的内存,根据你的需要,设置它的最大值吧. 第五步:设置完毕,关闭MSSQL服务再重启,配置即可生效!
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具sqlserver 2005执行完sql语句后,如何释放内存。_百度知道
sqlserver 2005执行完sql语句后,如何释放内存。
我用sql语句手动执行了插入50w条记录的操作,sqlserver所占内存从50m变成了100m,但是执行后过了很久,sqlserver仍然占100m,有没有什么办法释放掉这些资源。
我有更好的答案
没多大必要,SQLServer自己管理内存的话,你有多少它就可以吃多少,或者你可以设置一下数据库最大使用内存。实在心里不爽可以找个内存清理工具,定时清理
采纳率:50%
为您推荐:
其他类似问题
您可能关注的内容
sql语句的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 苹果怎样连接到电脑 的文章

 

随机推荐