测试环境小型公司网络(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运维日记