天天看点

【SQL Server】SQL Server占用CPU使用率100%的解决方法

<b>近日,帮一个客户解决了服务器CPU占用率高达100%的问题。</b>

以前做的一个某污水处理厂自控系统项目,客户反映其自控服务器有故障,由于自控服务存放iFIX服务器端、现场多套PLC实时数据、过程数据、报表数据等重要软件和数据。我赶往现场去处理。

<b>1、故障现象</b>

(1) 自控服务器风扇一直发出“嗡嗡嗡”较大响声;

(2)

通过任务管理器发现:CPU占用率为100%,其中sqlserver.exe进程占用CPU高达98%上。

<b>2、原因排查</b>

由于iFIX客户端上的报表软件是访问存储在自控服务器SQL Server里面的报表数据,所以怀疑是SQL

Server出现了状况。

(1) 进入SQL Server Management

Studio, 打开SQL Server Profiler,

【SQL&amp;nbsp;Server】SQL&amp;nbsp;Server占用CPU使用率100%的解决方法

新建跟踪

a.点击新建跟踪,并设置好数据库连接

b.设置跟踪属性,选择模板“Standard” 

c.切到“事件选择”进行跟踪设置

 1) 只保留如下两个事件选项

 2) 点击列筛选

 3) 进行详细筛选设置

设置CPU时间作为筛选条件,单位毫秒(用于跟踪耗CPU占用较长的查询,可设置为大于等于20000,按CPU内核数×1000,可以跟踪CPU占用100%大于1秒的查询)

【SQL&amp;nbsp;Server】SQL&amp;nbsp;Server占用CPU使用率100%的解决方法

(2) 点击运行,跟踪语句,定位CPU占用较多的语句

如下图所示,有两条SQL语句使CPU占用至少在25358毫秒以上,服务器为戴尔PowerEdge R710,CPU为4

核,则至少CPU占用100%耗时25358/4/1000 = 6.34秒才可以执行好相应的操作

【SQL&amp;nbsp;Server】SQL&amp;nbsp;Server占用CPU使用率100%的解决方法

以上CPU占用较多的两条语句为:

【SQL&amp;nbsp;Server】SQL&amp;nbsp;Server占用CPU使用率100%的解决方法

<b>3、处理方法</b>

这两条SQL 语句来自第三方水质在线监测软件。

暂时处理方法:拔掉水质在线监测软件电脑连接到自控服务器的网线,自控服务器风扇恢复正常,不再发出“嗡嗡嗡”响声,CPU占用率降到2%,一切恢复正常。

后续处理方法:需要第三方水质在线监测软件人员修复其两条SQL

语句。

<b></b>