做过运维的朋友们都可能会遇到:服务器应用程序运行慢的问题,最终各部门找上门,。
今天在这我跟大家分享一个案例及其解决办法。以前我跟很多朋友们也为这样的事情苦恼过,我的服务器内存可是64G啊,这都不够它吃的。
后来我打开任务管理器一看原来是内存耗尽惹得祸,内存使用99%,CPU使用70%~100%之间变动,如果访问应用的时候,服务器立马变成100%,空闲时慢慢降下一点来。再看进程里面的变化,你就会发现SQL Server进程占用99%的内存,这时我才恍然大悟,原来是数据库捣的鬼,。
捣蛋鬼找到了,但还没发现它是怎么捣蛋的,根据现象分析,服务每次重启都得过一段时间才会出现这样的问题,并且基本上一个礼拜后才出现这样的问题。经过查询资料知道,SQL Server在运行的时候会把访问过的数据缓存起来,以提高再次访问效率,也就是说内存耗尽的根找着了,!
分析到这里,很多朋友们可能都有解决办法了,就是设置数据库本身可以设置其使用的内存大小,灵感立马来了,赶紧去设置数据库使用的内存大小,下面给大家简单说一下配置方法,以SQL Server 2012为例:
1、首先打开数据库管理器;
2、然后在服务器名称上点右键选属性;
3、再点击内存,进入内存选项配置界面
设置完后,运行一段时间以后另一个问题又出现了,虽然服务器运行一段时间以后数据库把配置的内存吃完了,但是不会出现服务器死机卡顿现象,可应用服务程序运行还是会慢。
啊啊啊 只能出大招了
设置周期性重启SQL Server 2012 R2服务,下面给大家介绍一下方法:
1、建立一个重启SQL Server 2012 R2服务批处理文件。
首先,新建一个txt文档
接着,在刚才建的文档中输入一下命令
net stop sqlserveragent
net stop mssqlserver
net start mssqlserver
net start sqlserveragent
最后,保存文件名为ResetSqlServer,扩展名为bat
2、设置一个计划任务(我服务器系统是Wondows Server 2012),定时自动执行上面新建的批处理文件。
首先,进入控制面板,点击“查看方式”选“小图标”
接着,单击管理工具进入界面,双击“计划任务程序”,进入如下界面
再接着,单击创建任务,并输入任务名称,点确定保存
再接着,新建触发器,设置好后,点确定保存
提醒:开始时间一定设置成空闲时间
最后,新建操作,点击浏览按钮,选择刚刚建好的批处理文件ResetSqlServer.bat
到此为止,大功告成,修成正果!