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服务再重启,配置即可生效!

(0)

相关推荐

  • CI框架中zip类应用示例

    CI框架自带的zip类简单实用,本文就来简单说一下CI框架的zip类的使用. 首先需要导入zip类: 复制代码 代码如下: $this->load->('zip'); 此外,但是考虑到CI的结构,还需要设置一下自动加载类,把zip加载进去.也可以在设置的时候,统一加载.大家如果遇到这个问题可能就是自动加载没有加载zip类.具体调用方法如下: 复制代码 代码如下: $path = $_SERVER['DOCUMENT_ROOT'];//需要压缩的文件夹路径$this->zip->re

  • php ci框架中加载css和js文件失败的解决方法

    在将html页面整合到ci框架里面的时候,加载css和js失败,弄了半天发现ci框架是入口的框架,对框架中文件的所有请求都需要经过index.php处理完成,当加载外部的css和js文件的时候要使用base_url()函数处理外部的链接. 比如: 在config配置文件中的base_url为:" localhost:8080/项目名称/ " 在控制器中访问application/resource/aaa.js文件 相对路径<script src= "resource/a

  • CI框架在CLI下执行占用内存过大问题的解决方法

    很多程序员在使用codeigniter CLI下执行一个大批量数据导入的问题时,会一直出现内存过高的情况,下面对此分析器原因及解决办法. CI db会将所有的查询sql和和sql执行时间保存下来,对于类似百万级大数据量的导入问题来说,其执行的sql记录都会被保存在内容中,这就占用了大量的内容直至脚本结束. 解决办法:当你执行大数量的db操作时,记得设置: 复制代码 代码如下: $this->db->save_queries = FALSE;

  • CI框架自动加载session出现报错的解决办法

    很多程序员在CI中使用session的时候,开启自动加载session之后网站就报错了,具体错误信息如下:In order to use the Session class you are required to set an encryption key 下面一起来看问题解决办法. 提示信息说明:如果想用session类的话就必须要设置一个加密的密钥!那就给设置一个吧,毕竟也是出于安全考虑. 打开application/config/config.php找到Encryption Key 复制代

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

    使用MSSQL的站长朋友都会被MSSQL数据库吃内存的能力佩服得五体投地,一个小小的网站,运行若干天之后,MSSQL就会把服务器上所有的内存都吃光,此时你不得不重新启动一下服务器或MSSQL来释放内存,有人认为是MSSQL有内存泄露问题,其实不然,微软给我们了明确说明: 在您启动 SQL Server 之后,SQL Server 内存使用量将会持续稳定上升,即使当服务器上活动很少时也不会下降.另外,任务管理器和性能监视器将显示计算机上可用的物理内存稳定下降,直到可用内存降到 4 至 10 MB

  • MySQL占用内存较大与CPU过高测试与解决办法

    更改后如下: innodb_buffer_pool_size=576M ->256M InnoDB引擎缓冲区占了大头,首要就是拿它开刀 query_cache_size=100M ->16M 查询缓存 tmp_table_size=102M ->64M 临时表大小 key_buffer_size=256m ->32M 重启mysql服务后,虚拟内存降到200以下. 另外mysql安装目录下有几个文件:my-huge.ini .my-large.ini.my-medium.ini..

  • MySQL占用内存过大解决方案图文详解

    目录 前言 解决方案 1. 找到配置文件 2. 修改配置文件 3. 重启MySQL 后记 前言 对于部分小资玩家来说,服务器数量和内存往往是很有限的,像我个人的服务器配置就是2核4G5M. 4G内存对于Java玩家来说,真的不大,开几个中间件+自己的微服务真的还蛮挤的,然后又摊上MySQL这个大冤种.我本机上的MySQL仅仅只占几M内存(虽然我不怎么用,但是本机MySQL确实是开着的): 而服务器的则要占400M,怎么说其实没什么吞吐量,纯粹是自己玩一玩,这内存占用属实有点吃不消啊... 解决方

  • 解决MongoDB占用内存过大频繁死机的方法详解

    从MongoDB 3.4开始,默认的WiredTiger内部缓存大小是以下两者中的较大者: 50%(RAM-1 GB),或 256 MB 例如,在总共有4GB RAM的系统上,WiredTiger缓存将使用1.5GB RAM(). 相反,总内存为1.25 GB的系统将为WiredTiger缓存分配256 MB,因为这是总RAM的一半以上减去1 GB(). // 4GB 0.5 * (4 GB - 1 GB) = 1.5 GB // 1.25GB 0.5 * (1.25 GB - 1 GB) =

  • Linux服务器无法登陆问题的解决方法

    单用户模式(俗称 拯救世界模式) 在开机的时候长按 shift进入grub菜单或者在开机选择画面的时候选择ubuntu高级模式,之后按 e 进入 编辑模式将 ro recovery nomodeset 改为 rw single init=/bin/bash (这里需要注意的是,改动的那个模式,一会儿启动的时候就去启动那个模式). 按 ctrl+x或者F10进入单用户模式,当前用户即为root.这时候可以修改文件.修改完毕后重启即可. 以上这篇Linux服务器无法登陆问题的解决方法就是小编分享给大

  • easyui datagrid 大数据加载效率慢,优化解决方法(推荐)

    在使用easyui datagrid途中发现加载数据的效率真的不是一般的差.经测试IE8加载300条数据就感觉明显的慢了,加载2000条数据就另人崩溃用时差不多60秒,就算在google浏览器测试结果也快不了几秒. 平时听闻easyui datagrid效率底下,自己测试才发现真是使人无法忍受. 笔者只好百度,google解决方法,发现一篇文章说改 //1.3.3版本是这样的,其它版本也是这句代码 $(_1e0).html(_1e4.join("")); 改为: $(_1e0)[0].

  • ubuntu 服务器中文乱码问题的解决方法

    之前买了阿里云的服务器,后来在上面编辑中文字符的时候发现乱码,在网上找了下解决方案,发现比较乱,有的也不太好用,特此整理了一下可用的一个方案. 检查 检查是否已经安装了中文包支持.终端输入: sudo dpkg -l 查看是否安装了中文支持( language-pack-zh )的软件包. 安装 没有安装,那就终端执行命令 : apt-get install language-pack-zh 配置语言环境变量 vim /etc/environment 在下面添加如下两行: LANG="zh_CN

  • DNS服务器可能不可用的解决方法

    记录一下碰到的问题 问题的详细情况是:计算机能够上网,但是打开某个网页的时候显示DNS服务器可能不可用 背景是:从武汉到上海,能够ping通网关,不能ping通DNS服务器,可以上网,但是某个网页显示DNS可能不可用 如下图:网页无法打开,用windows诊断的结果 然后是在运行cmd中输入ipconfig/all 查看网关和DNS服务器的地址 ping网关,可以ping通 pingDNS服务器,不能ping通 ping备用DNS服务器,不能ping通 这个时候我们可以设置一下DNS服务器的地址

  • 服务器iis假死的原因及解决方法

    打开IIS 你就会看到应用程序池,默认只有一个应用程序池,查看应用程序池的属性,会发现他的回收时间,默认多达,1740分钟,就是说,需要在1740分钟后才回收此应用程序池,如果在这个时间内,达到请求的最高限制,那么就会出现ASP假死的情况,这个就是大型网站出现假死的情况,反而,小型网站确不会出现这样的情况,因为他请求少,流量少,还没达到限制数量.当然要看你的服务器上网站数目而定. 单个网站解决方法: 把应用程序池回收时间缩短到300-600分钟,其间回收过程中,需要占用一点CPU资源,没办法,为

  • asp.net“服务器应用程序不可用” 解决方法

    引起这个的原因大概是现安装了.Net Framework后装的IIS导致.Net没有在IIS里注册. 在网上找了很久都是说从.net命令行工具里运行aspnet_regIIS /i就可以了(或者在类似下面的目录:C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe -i),但是自己试了很多次都不行,后来发现还是要先卸载再安装,重新创建为应用程序才行,具体如下: 从.net命令行工具里运行 aspnet_regIIS /u 卸

随机推荐