Welcome To Heike07's Blog.

欢迎来到Heike07官方博客

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

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

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

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

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

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

5.cpu应该恢复正常了。

数据库部分:

检查数据库结构用以下语句查看占比cpu最高的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

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

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

IIS部分:

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

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

调整程序池的响应时间。

 

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

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

 

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

heike07运维日记

点赞

发表回复