关于server服务器CPU占比100%解决办法

测试环境小型公司网络(server2008系统   数据库+iis7服务器)

1.检查系统进程管理器最大进程,记下他的PID

2.检查数据库进程占用情况,检查iis进程占用情况

3.将sqlserver.EXE进程终止查下cpu是否下降。如果下降了就是数据库问题查看下面数据库问题部分。

4.如果没下降继续检查iis进程,一般进程为w3wp.exe,停止该进程查看cpu是否下降了,iis问题查看iis部分

5.cpu应该恢复正常了。

数据库部分:

检查数据库结构用以下语句查看占比cpu最高的sql查询语句。

[code lang=”sql”]
–统计占用cpu最多的查询,比如前10
SELECT TOP 10
total_worker_time AS TotalTime,
total_worker_time/execution_count AS avg_cpu_cost,
plan_handle,
execution_count,
(SELECT SUBSTRING(text,statement_start_offset/2 + 1,
(CASE WHEN statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX),text))*2
ELSE statement_end_offset END – statement_start_offset)/2)
FROM sys.dm_exec_sql_text(sql_handle))AS query_text
FROM sys.dm_exec_query_stats
ORDER BY [avg_cpu_cost] DESC
[/code]

查询后在结果看到占比最高的查询语句,如果你是dba或者是管理人员你可以对数据库语句进行优化。
生成报表交给dba去分析。
具体问题具体解决。

紧急解决:当cpu占比100% (sql占用)
在服务里重新启动SQL Server (MSSQLSERVER)服务连带着sql代理也会重新启动,
该方法是解决查询死循环的一个利刃!

IIS部分:

检查iis运行最大的程序池    命令 iisapp -a

查看后将结果报给网管查询原因,具体问题具体分析。

调整程序池的响应时间。

 

紧急解决:当cpu占比100%(wp3p占用)

在iis管理器里将占用最高的程序池停止,稍后在启动即可,切记不要重启iis管理器,这样会对服务器造成压力并不解决问题

 

目前就这些,如果有其他想法可以在下方留言。欢迎讨论。

heike07运维日记

Leave a Comment