常见的高CPU利用率出现几个原因:

  1. Missing Index
  2. 统计信息过时
  3. 非SARG查询
  4. Implicit Conversions
  5. Parameter Sniffing
  6. Non-parameter Ad-hoc Query
  7. 非必要并行查询

--1.Check the Architecture's Type is or not NUMA (non-uniform memory access)

select

scheduler_id,

cpu_id,

parent_node_id,

status

from sys.dm_os_schedulers;

--2. The memory size of memory clerks. Checking the Buffer Pool Memory(MEMORYCLERK_SQLBUFFERPOOL) size and SQL Queuery Plan(MEMORYCLERK_SQLQUERYPLAN) is very important for tuning the performance.

select

type,

memory_node_id,

virtual_memory_committed_kb,

virtual_memory_reserved_kb,

awe_allocated_kb

from sys.dm_os_memory_clerks

order by virtual_memory_reserved_kb desc;

--3. Check the Size of Current Cache Plan.

select

objtype ,

COUNT(*) AS 'Number of Plans' ,

SUM(CAST(size_in_bytes AS BIGINT)) / 1024 / 1024 AS 'Plan Cache Size (MB)'

FROM sys.dm_exec_cached_plans

Group by objtype;

--4. Check the Type of CPU of SQL Server

select

cpu_count as 'Logical CUP Count',

hyperthread_ratio as 'Hyperthread Radio',

cpu_count /hyperthread_ratio as 'Physical CPU Count',

physical_memory_in_bytes/1048576 as 'Physical Memory (MB)'

from sys.dm_os_sys_info

--5.Check the IO of Datafile or Logfiles.

SELECT DB_NAME(DB_ID()) AS [Database Name] ,

[file_id] ,

num_of_reads ,

num_of_writes ,

num_of_bytes_read ,

num_of_bytes_written ,

CAST(100. * num_of_reads / ( num_of_reads + num_of_writes ) AS DECIMAL(10,

1)) AS [# Reads Pct] ,

CAST(100. * num_of_writes / ( num_of_reads + num_of_writes ) AS DECIMAL(10,

1)) AS [# Write Pct] ,

CAST(100. * num_of_bytes_read / ( num_of_bytes_read

+ num_of_bytes_written ) AS DECIMAL(10,

1)) AS [Read Bytes Pct] ,

CAST(100. * num_of_bytes_written / ( num_of_bytes_read

+ num_of_bytes_written ) AS DECIMAL(10,

1)) AS [Written Bytes Pct]

FROM sys.dm_io_virtual_file_stats(DB_ID(), NULL);

--6. Check the top 10 longest waits

SELECT TOP ( 10 )

wait_type ,

waiting_tasks_count ,

( wait_time_ms - signal_wait_time_ms ) AS resource_wait_time ,

max_wait_time_ms ,

CASE waiting_tasks_count

WHEN 0 THEN 0

ELSE wait_time_ms / waiting_tasks_count

END AS avg_wait_time

FROM sys.dm_os_wait_stats

WHERE wait_type NOT LIKE '%SLEEP%' -- È¥³ý²»Ïà¹ØµÄµÈ´ýÀàÐÍ

AND wait_type NOT LIKE 'XE%'

AND wait_type NOT IN -- È¥³ýϵͳÀàÐÍ

( 'KSOURCE_WAKEUP', 'BROKER_TASK_STOP', 'FT_IFTS_SCHEDULER_IDLE_WAIT',

'SQLTRACE_BUFFER_FLUSH', 'CLR_AUTO_EVENT', 'BROKER_EVENTHANDLER',

'BAD_PAGE_PROCESS', 'BROKER_TRANSMITTER', 'CHECKPOINT_QUEUE',

'DBMIRROR_EVENTS_QUEUE', 'SQLTRACE_BUFFER_FLUSH', 'CLR_MANUAL_EVENT',

'ONDEMAND_TASK_QUEUE', 'REQUEST_FOR_DEADLOCK_SEARCH', 'LOGMGR_QUEUE',

'BROKER_RECEIVE_WAITFOR', 'PREEMPTIVE_OS_GETPROCADDRESS',

'PREEMPTIVE_OS_AUTHENTICATIONOPS', 'BROKER_TO_FLUSH' )

ORDER BY wait_time_ms DESC

--7.Check the parallelism Query

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

WITH XMLNAMESPACES

(DEFAULT 'http://schemas.microsoft.com/SQL Server/2004/07/showplan')

SELECT query_plan AS CompleteQueryPlan ,

n.value('(@StatementText)[1]', 'VARCHAR(4000)') AS StatementText ,

n.value('(@StatementOptmLevel)[1]', 'VARCHAR(25)')

AS StatementOptimizationLevel ,

n.value('(@StatementSubTreeCost)[1]', 'VARCHAR(128)')

AS StatementSubTreeCost ,

n.query('.') AS ParallelSubTreeXML ,

ecp.usecounts ,

ecp.size_in_bytes

FROM sys.dm_exec_cached_plans AS ecp

CROSS APPLY sys.dm_exec_query_plan(plan_handle) AS eqp CROSS APPLY query_plan.nodes

('/ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple')

AS qn ( n )

WHERE n.query('.').exist('//RelOp[@PhysicalOp="Parallelism"]') = 1

High CPU Usage 原因及分析的更多相关文章

  1. CPU利用率和CPU负荷(CPU usage vs CPU load)

    对于CPU的性能监测,通常用top指令能显示出两个指标:cpu 利用率和cpu负荷. 其中%Cpu相关的内容: us表示用户进程cpu利用率,sy表示系统内核进程cpu利用率,ni表示运行正常进程消耗 ...

  2. Linux下java进程CPU占用率高分析方法

    Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...

  3. Unity Profiler CPU Usage(CPU使用情况)

    在Profiler界面点击左侧CPU Usage,Profiler界面下方Hierarchy窗口会列出各个函数对当前CPU的耗时,从大到小排序. 然后分析,各个函数的耗时是否异常,分析有没有可以优化的 ...

  4. Docker CPU Usage

    背景 当一台机器上跑有多个 Docker Container 的时候,我们需要知道,哪些容器占用了多少资源.采集这些指标,来让我们可以更加好的分配资源给每个 Container. 获取容器CPU使用率 ...

  5. PostgreSQL CPU满(100%)性能分析及优化(转)

    PostgreSQL CPU满(100%)性能分析及优化 转自:https://help.aliyun.com/knowledge_detail/43562.html    在数据库运维当中,一个DB ...

  6. MySQL SYS CPU高的案例分析(一)

    原文:MySQL SYS CPU高的案例分析(一) [现象] 最近关注MySQL CPU告警的问题时,发现有一种场景,有一些服务器最近都较频繁的出现CPU告警,其中的现象是 SYS CPU占比较高. ...

  7. Linux下java进程CPU占用率高分析方法(一)

    Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...

  8. systemd --user进程CPU占用高问题分析

    1.问题由来 近期发现堡垒机环境有如下问题,systemd占用大量cpu: 原文链接:https://www.cnblogs.com/yaohong/p/16046670.html 2.问题定位 2. ...

  9. CPU利用率异常的分析思路和方法交流探讨

    CPU利用率异常的分析思路和方法交流探讨在生产运行当中,经常会遇到CPU利用率异常或者不符合预期的情况,此时,往往暗示着系统性能问题.那么究竟是核心应用的问题?是监控工具的问题?还是系统.硬件.网络层 ...

随机推荐

  1. golang下的grpc

    facebook的thrift也是开源rpc库,性能高出grpc一倍以上,grpc发展的较晚,期待以后有长足的进步.简单来说thrift = grpc + protobuf gRPC基于HTTP/2标 ...

  2. 关于蜂窝物联技术 NBIoT 的一些观点

    背景 SigFox 开始于2009,这项技术对长期作为标准移动电话交互标准的3GPP造成了有力冲击.SigFox 解决了终端设备互联场景下的多个痛点: 1 过于复杂: 2 昂贵的设备: 3 耗电不持久 ...

  3. OpenResty 是一个全功能的 Web 应用服务器

    OpenResty (也称为 ngx_openresty)是一个全功能的 Web 应用服务器.它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项. 通过众多进行良好设计的 ...

  4. Hibernate实体生成JSON的问题及解决

    1.延迟加载所造成的代理对象无法正常序列化的问题 在实体类上添加注解: @JsonIgnoreProperties({ "hibernateLazyInitializer", &q ...

  5. ionic 启用sass

    转入ionic项目目录,命令行下执行:ionic setup sass 提示编译器未装: You have specified Ionic CI to set up sass.However, you ...

  6. 单例实现c++

    #include <iostream> using namespace std; class Singleton { public: static Singleton *GetInstan ...

  7. 【学】jQuery的源码思路2——$符号是如何封装的

    jQuery中的$符号功能很强大,原因在于对函数参数的个数以及种类的控制,还有对于面向对象思想的运用 function jQuery(args){ //接受参数,并对其判断 this.elements ...

  8. 无索引状态下比较DataTable的几种过滤方法效率

    先构造一个DataTable: public DataTable GetDataTable() { DataTable dtTmp = new DataTable(); dtTmp.Columns.A ...

  9. docker使用阿里云Docker镜像库加速

    官方镜像下载实在是慢,于是开通了阿里云开发者帐号, 官方帮助 阿里云Docker镜像库 阿里云容器Hub服务:http://dev.aliyun.com/search.html 来自云端的容器Hub服 ...

  10. MySQL For Windows修改最大连接数

    1.从官网下载安装MySQL Installer.MySQL Installer 提供了简单易用.向导式的 MySQL 软件的安装体验过程(目前只支持 Windows),包含的产品有: MySQL S ...