日期:2014-05-17  浏览次数:20644 次

数据库CPU100%的问题
现在数据库服务器在晚上21:30---到21:35分钟时候,会出现CPU--100%情况

我用SQL 事件探查器跟踪也没有发现在这个时间段出现什么SQL语句性能很差的情况,当CPU100%一些常用的SQL语句也会性能变的很差,也会开始出现现死锁的情况.
我查了,这个时间段也没有什么定时任务在执行.
我想请问一下,什么情况下会出现CPU100%情况,我怎么跟踪了,因为我跟踪后看出不什么问题.
谢谢各位.找了一段时间都没有找到原因.

------解决方案--------------------
不一定就是SQL造成CPU--100%

你查查其他进程.


------解决方案--------------------
任务管理器--查看CPU使用情况--那个进程占用过多。
如果是SQL Server ,再用事件查看器查看
------解决方案--------------------
用 管理工具——性能,监控一下。 看CPU的峰值与I/O还是与别的有关。 然后进一步进行处理!
------解决方案--------------------
CPU占用率高的九种可能 
1、防杀毒软件造成故障 
由于新版的KV、金山、瑞星都加入了对网页、插件、邮件的随机监控,无疑增大了系统负担。处理方式:基本上没有合理的处理方式,尽量使用最少的监控服务吧,者,升级你的硬件配备。 
2、驱动没有经过认证,造成CPU资源占用100% 
大量的测试版的驱动在网上泛滥,造成了难以发现的故障原因。 处理方式:尤其是显卡驱动特别要注意,建议使用微软认证的或由官方发布的驱动,并且严格核对型号、版本。 
3、病毒、木马造成 
大量的蠕虫病毒在系统内部迅速复制,造成CPU占用资源率据高不下。解决办法:用可靠的杀毒软件彻底清理系统内存和本地硬盘,并且打开系统设置软件,察看有无异常启动的程序。经常性更新升级杀毒软件和防火墙,加强防毒意识,掌握正确的防杀毒知识。 
4、控制面板—管理工具—服务—RISING REALTIME MONITOR SERVICE点鼠标右键,改为手动。 
5、开始->;运行->;msconfig->;启动,关闭不必要的启动项,重启。 
6、查看“svchost”进程。 
svchost.exe是Windows XP系统的一个核心进程。svchost.exe不单单只出现在Windows XP中,在使用NT内核的Windows系统中都会有svchost.exe的存在。一般在Windows 2000中svchost.exe进程的数目为2个,而在Windows XP中svchost.exe进程的数目就上升到了4个及4个以上。 
7、查看网络连接。主要是网卡。 
8、查看网络连接 
当安装了Windows XP的计算机做服务器的时候,收到端口 445 上的连接请求时,它将分配内存和少量地调配 CPU资源来为这些连接提供服务。当负荷过重的时候,CPU占用率可能过高,这是因为在工作项的数目和响应能力之间存在固有的权衡关系。你要确定合适的 MaxWorkItems 设置以提高系统响应能力。如果设置的值不正确,服务器的响应能力可能会受到影响,或者某个用户独占太多系统资源。 
要解决此问题,我们可以通过修改注册表来解决:在注册表编辑器中依次展开[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceslanmanserver ]分支,在右侧窗口中新建一个名为“maxworkitems”的DWORD值。然后双击该值,在打开的窗口中键入下列数值并保存退出: 
9、看看是不是Windows XP使用鼠标右键引起CPU占用100% 
在资源管理器里面,当你右键点击一个目录或一个文件,你将有可能出现下面所列问题: 
任何文件的拷贝操作在那个时间将有可能停止相应 
网络连接速度将显著性的降低 
所有的流输入/输出操作例如使用Windows Media Player听音乐将有可能是音乐失真成因: 
当你在资源管理器里面右键点击一个文件或目录的时候,当快捷菜单显示的时候,CPU占用率将增加到100%,当你关闭快捷菜单的时候才返回正常水平。
------解决方案--------------------
是不是这个时候有在作备份等特定的操作导致!
------解决方案--------------------
探讨
可以确定是SQL造成CPU100%

------解决方案--------------------
探讨
出现CPU100%只会出现5分钟,5分钟后就会全部正常.

------解决方案--------------------
看一下机器上那段时间有什么操作没有?包括其他程序以及数据库作业
------解决方案--------------------
开profiler监控这个时间段内的所有sql.
如果没有问题,那就不是sql server问题。
------解决方案--------------------
你21.30之前登陆服务器,直接查看那个进程占CPU,要先确定是不是SQL作怪。如果是SQL再查看定时作业。
------解决方案--------------------
在21点30之前打开事件探查器,保存记录,第二天查看
------解决方案--------------------
事件探查器你是怎么使用的?
------解决方案--------------------
个人感觉在这个时间段有其它的应用程序在集中访问数据库.
------解决方案--------------------
那很可能原因不在数据库这边,而是数据库服务器上的其他进程引起
------解决方案--------------------
在那个时间段内,运行以下语句,贴出结果

select * from sys.dm_exec_sessions 
order by cpu_time desc
------解决方案--------------------