
使用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 TO Determine Proper SQL Server Configuration Settings(确定正确的 SQL Server 配置设置)
请注意 服务器内存最大值选项只限制 SQL Server 缓冲池的大小 服务器内存最大值选项不限制剩余的未保留内存区域 SQL Server 准备将该区域分配给其他组件 例如扩展存储过程 对象 以及非共享 DLL EXE 和 MAPI 组件 由于前面的分配 SQL Server 专用字节超过服务器内存最大值配置是很正常的 有关此未保留内存区域中分配的其他信息 请单击下面的文章编号 以查看 Microsoft 知识库中相应的文章
PRB 在使用大量数据库时可能没有足够的虚拟内存
参考
SQL Server 联机图书;主题 "服务器内存最小值和最大值的影响";"内存体系结构";"服务器内存选项";"SQL Server 内存池"
下面我们就来实战如何限制MSSQL内存使用:
第一步:打开企业管理双击进入要修改的MSSQL
第二步:在左侧MSSQL上点击右键 选择属性 d出SQL Server属性(配置)对话框
第三步:点击内存选项卡
在这里 你会看到MSSQL默认设置为使用最大内存 也就是你所有的内存 根据你的需要 设置它的最大值吧
lishixinzhi/Article/program/MySQL/201311/29533
题主是否想询问“E站页面负载过大是什么原因”?CPU负荷过大。首先应该确认服务器硬件是否足够支持当前的流量,然后降低服务器CPU的负荷,才能够有效解决E站页面负载过大的问题,或者通过缓存技术来解决,所谓缓存技术就是将动态数据存储到缓存文件中,动态网页直接调用这些文件,而不必再访问数据库的过程。
问题一:负载过大是什么意思 cpu负载的定义:在一般情况下可以将单核心cpu的负载看成是一条单行的桥,数字1代表cpu刚好能够处理过来,即桥上能够顺利通过所有的车辆,桥外没有等待的车辆,桥是畅通的。当超过1时表示有等待上桥的车辆,小于1时表示车辆能够快速的通过。单核心cpu就表示该cpu能够处理的事务数是1,
在多核cpu中cpu能够并行处理的事务的数量应该是cpu个数cpu核数,而且负载数最好不要超过这个数值。例如一个4核cpu,则cpu_load最大值为4,不能长期超过4,否则会有任务没有得到及时的处理,而使系统的负载累积增高,导致系统运行缓慢。
可以同时按住ctrl和alt键,再按del键进入任务管理器,点击“性能”查看一下。
问题二:负载过大是什么意思? 就是载荷加大了
超过结构的额定载荷
或是超过载荷的规定载荷
我们称之为负载过大
问题三:肝细胞负荷过大是什么意思啊 肝细胞负荷过大应该是说肝脏负荷过大吧。
一般是指在肝脏清除体内代谢废物或一些药物、激素、毒物等方面,超过了肝脏的现有能力,使得毒素、药物等无法被代谢、排除,往往会造成机体脏器功能损害。
问题四:CPU负荷太大是什么意思怎么调整 系统处理的东西太多了
1右键点击我的电脑→属性→高级→性能→高级 把处理器计划改为程序 内存改为程序
2清除掉所有多余的随机启动项目一般只留下钉软就可以了
问题五:柴油机负载过大是什么意思 柴油机负载过大是分两个方面,1・功率不配套,选用柴油机功率过小,小马拉大车。2・柴油机运转过程中受到外来因素导致的,比如,货车爬陡坡,微耕机耕地时泥土僵硬等等原因造成的。
问题六:电路中负荷过大会有什么危险 电路中负荷过大会造成电流过大,或烧保险或容易造成火灾。
问题七:在电路中负载过大过重指的是什么 你所接入的负载消耗功率大于电路提供的功率。
一个不太恰当的比方,你配台式电脑,电源的功率不能选小了,那是因为你担心作为负载的主板的消耗功率可能大于电源的提供功率。
问题八:怠速发动机负荷过大是怎么回事 关于发动机怠速负荷过大的分析如下:
工作性能良好的发动机,其怠速一般为550-800转/分钟。超过800分钟/转即为怠速过高。
怠速高的原因有:
1、怠速开关不闭合
故障分析 怠速触点断开,ECU便判定发动机处于部分负荷状态,此时ECU根据空气流量传感器和曲轴位置、转速信号确定喷油量和喷油时间。而此时发动机却是在怠速工况下工作,进气量较少,造成混合气过浓,转速上升。当ECU收到氧传感器反馈的混合气过浓信号后,减少喷油量,增加怠速控制阀的开度,又造成混合气过稀,使转速下降;当ECU收到氧传感器反馈的混合气过稀信号时,又增加喷油量,减小怠速控制阀的开度,又造成混合气过浓,使转速上升。如此反复,使发动机怠速不稳。在怠速工况时开空调,转动转向盘,开照灯均会增加发动机的负荷,为了防止发动机因负荷增大而熄火,ECU会增大供油量来维持发动机的平衡运转。怠速触点断开,ECU认为发动机不是处于怠速工况,就不会增大供油量,因而转速没有提升。
问题九:负荷短路形成过大电流是什么意思 负荷短路形成过大电流是什么意思
在短路点附近的大功率电动机,由于短路时它仍在旋转,它所具有的动能使它处于发电状态,这时它会提供短路电流。
1时候在使用Access文件的时候,随着增删改的不断的连续,会导致文件越来越大。即使手动删除或者使用delete语句删除了大量的数据记录,会发现文件的大小依然没有减掉,而且随着你再往里写数据,又会增大。
2产生这个现象的原因跟Access本身的机制有关,具体也不清楚,好像是有什么历史记录还是什么存储碎片。ACCESS数据库在进行删除 *** 作后,并不从该数据库中把数据清除掉,而是删除其索引相关的东西,虽然显示不出来,但是那些东西还是在文件中存在的,所以会引起ACCESS数据库文件越来越大。即使是我们不通过代码来访问access文件,而只是通过用户界面访问,随着文件的增大,也会带来一系列的问题。其症状包括:对象可能打开得更慢,查询可能比正常情况下运行的时间更长,各种典型 *** 作通常似乎也需要使用更长时间。更何况如果在网站应用中,采用的是Access作为数据库的话,这里就有了性能上的问题。文件越来越大,会影响查询的速度,而且ACCESS是采用独占方式工作的,也就是说一次只能一个进程打开这个数据库执行 *** 作,如果是多个用户的话就要"排队"了,所以ACCESS数据库如果变为很大的话,执行一个查询时间就会变长,而进程"排队"的等待时间也就会变得很久,专业型的数据库就不同,可以同时接收多个并发的访问,可以采用SQL数据库或其它大型并发数很强的数据库。
3但是很多时候我们是需要Access文件,往不同的地方拷贝的,比如说,一个Server上生成了一个Access文件,需要拷贝到另外的Server上,而且Server间如果网速不是很好的话,会需要很长的时间来传输这个文件。所以这时候我们希望这个文件在内容不变的前提下,越小越好。所以我们可以去除这个Access的冗余信息。
4Office Access本身就有这种功能,我们可以通过菜单找到这个工具,然后单击这个图标手动压缩。
5执行以下这几句代码就可以了。
首先引用C:\Program Files\Common Files\System\ado\msadoxdll,该DLL包含ADOX命名空间;
接着引用C:\Program Files\Common Files\System\ado\msjrodll,该DLL包含JRO命名空间
注意:如,导入dll不成功,手动把com组件 导入为 net组件,在用vsnet工具导入
///压缩修复ACCESS数据库,mdbPath为数据库绝对路径
public void Compact(string mdbPath)
{
if (!FileExists(mdbPath)) //检查数据库是否已存在
{
throw new Exception("目标数据库不存在,无法压缩");
}
//声明临时数据库的名称
string temp = DateTimeNowYearToString();
temp += DateTimeNowMonthToString();
temp += DateTimeNowDayToString();
temp += DateTimeNowHourToString();
temp += DateTimeNowMinuteToString();
temp += DateTimeNowSecondToString() + "bak";
temp = mdbPathSubstring(0, mdbPathLastIndexOf("\\") + 1) + temp;
//定义临时数据库的连接字符串
string temp2 = "Provider=MicrosoftJetOLEDB40;Data Source=" + temp;
//定义目标数据库的连接字符串
string mdbPath2 = "Provider=MicrosoftJetOLEDB40;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=l1epc2";
//创建一个JetEngineClass对象的实例
JetEngineClass jt = new JetEngineClass();
//使用JetEngineClass对象的CompactDatabase方法压缩修复数据库
jtCompactDatabase(mdbPath2, temp2);
//拷贝临时数据库到目标数据库(覆盖)
FileCopy(temp, mdbPath, true);
//最后删除临时数据库
FileDelete(temp);
}
给你个思路:最新修改时间,你可以利用触发器实现,在数据表的建立update触发器,发现有变更就自动在指定表中进行数据更新,这样你的程序只查询那个表,不需要全表排列检查,数据库没负担了。
说白了就是服务器的承受能力。 第一,确认服务器硬件是否足够支持当前的流量。
普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大,那么必须首先配置一台更高性能的专用服务器才能解决问题,否则怎么优化都不可能彻底解决性能问题。
第二,优化数据库访问。
服务器的负载过大,一个重要的原因是CPU负荷过大,降低服务器CPU的负荷,才能够有效打破瓶颈。而使用静态页面可以使得CPU的负荷最小化。前台实现完全的静态化当然最好,可以完全不用访问数据库,不过对于频繁更新的网站,静态化往往不能满足某些功能。
缓存技术就是另一个解决方案,就是将动态数据存储到缓存文件中,动态网页直接调用这些文件,而不必再访问数据库,WordPress和Z-Blog都大量使用这种缓存技术。我自己也写过一个Z-Blog的计数器插件,也是基于这样的原理。
如果确实无法避免对数据库的访问,那么可以尝试优化数据库的查询SQL避免使用Select from这样的语句,每次查询只返回自己需要的结果,避免短时间内的大量SQL查询。
第三,禁止外部的盗链。
外部网站的或者文件盗链往往会带来大量的负载压力,因此应该严格限制外部对于自身的或者文件盗链,好在目前可以简单地通过refer来控制盗链,Apache自己就可以通过配置来禁止盗链,IIS也有一些第三方的ISAPI可以实现同样的功能。当然,伪造refer也可以通过代码来实现盗链,不过目前蓄意伪造refer盗链的还不多,可以先不去考虑,或者使用非技术手段来解决,比如在上增加水印。
第四,控制大文件的下载。
大文件的下载会占用很大的流量,并且对于非SCSI硬盘来说,大量文件下载会消耗CPU,使得网站响应能力下降。因此,尽量不要提供超过2M的大文件下载,如果需要提供,建议将大文件放在另外一台服务器上。目前有不少免费的Web20网站提供分享和文件分享功能,因此可以尽量将和文件上传到这些分享网站。
至强E5-2640 为六核心 十二线程的 看的出你得服务器上有两个处理器,此类处理器还是带的动500人同时访问,没必要换。你的内存使用量太高了,建议关闭不必要后台。如果你要找出是数据库的造成问题 那么你得把数据库代码发出来 不然是无法为你找的 你给的只是CPU和内存在任务管理器里使用率,服务器长时间不关机 也是导致运行缓慢的原因之间,windows系统开时间长了系统占用资源很大临时文件很多,建议使用linux或unix系统关闭不必要的端口服务 数据库建议使用oracle或者my sql数据库。
希望我的回答对你有帮助
以上就是关于MSSQL数据库占用内存过大造成服务器死机问题的解决方法全部的内容,包括:MSSQL数据库占用内存过大造成服务器死机问题的解决方法、E站页面负载过大、负荷过大是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)