sql server常用性能计数器

时间:2024-03-06 08:17:45

https://blog.csdn.net/kk185800961/article/details/52462913?utm_source=blogxgwz5

https://blog.csdn.net/kk185800961/article/details/27657239

 

以下部分转自:http://www.cnblogs.com/zhijianliutang/p/4174697.html

 【1】基本一览

 

 

【2】指标详解

【2.1】PhysicalDisk–磁盘

(1)%Disk Time——-磁盘利用率  :为读或写请求提供服务所用的时间是百分比,放映磁盘工作的繁忙程度。若数值持续超过80%,则可能是内存泄漏。

(2)%Idle Time ——磁盘闲置时间的百分比 :汇报磁盘系统没在处理任何请求, 而且没有任何工作在队列中的时间的百分比. 注意这个计数器和%Disk Time相加的时候可能结果不是100%, 因为%Disk Time可能会夸打磁盘的利用率。

(3)Avg.Disk Queue Length——处理列队中的队列的平均长度  :读取和写入请求(为磁盘在实例间隔中队列的)平均数,处理器瓶颈会导致该值持续大于2,超过2这可能表示处理器堵塞不同时监视线程计数,这计数始终为0。

(4)Avg. Disk Bytes/Transfer–衡量输入/输出(I/O)操作的数据量的大小 :如果磁盘相对快速地传输大量数据, 那磁盘是高效的.当衡量最大吞吐量的时候, 应该观察这个计数器.要进一步地分析数据传输, 应当查看Avg. Disk Bytes/Read 和Avg. Disk Bytes/Write两个计数器。

(5)Disk Transfer/sec—读取/写入操作速率 :正常值<(Disk Bytes/sec)/3,此值过大表示系统要求的IO速度已接近硬盘的最大速度,要更换更快的硬盘。

(6)Split IO/sec–I/O请求分为多个磁盘请求的比率

  汇报操作系统将I/O请求分为多个磁盘请求的比率. 如果一个程序请求的数据大小太大, 以至于不能放在一个单个请求中, 或是磁盘有碎片, 那么一个split I/O请求可能会发生.

  影响IO请求大小的因素可以包括应用程序设计, 文件系统, 驱动程序. 高比率的split I/O可能本身不会作为一个问题出现. 然而, 在单磁盘系统中, 这个计数器的高数值趋向于标志着磁盘碎片。

* 补充:分析磁盘是否存在瓶颈最直观的是看%Disk Time是否超过了100%,然后看Avg.Disk Queue Length的值,一般该值不会超过磁盘数的1.5-2倍, 一个raid disk,也就是磁盘队列会有多个磁盘;

如果只是这两个值高,一般就是磁盘存在瓶颈,特别是数据库服务器容易存在IO方面的问题。另外一个磁盘频繁读写的原因可能是由于内存不足造成的,内存不足时,系统就会从磁盘读取大量的数据,可以参考Page Read/Second 或者内存的一些指标分析 *

【2.2】Processor-处理器

(1)%Interrupt Time—中断时间的百分比

Interrupt Time (中断时间百分比) 是指处理器在采样间隔期间接收和维修硬件中断的时间。该值是生成中断的设备(如系统时钟、鼠标、磁盘驱动器、数据通信线路、网卡和其他外设)活动的间接指标。这些设备通常在完成任务或需要引起注意时中断处理器。在中断期间,正常的线程执行将暂停。大多数系统时钟每 10 毫秒中断一次处理器,创建中断活动背景。在中断期间,暂停正常的线程执行。此计数器显示平均繁忙时间在采样时间内所占的百分比。

(2)%Privileged Time—特权时间的百分比

CPU在特权模式下处理线程所花的时间百分比。一般的系统服务,进城管理,内存管理等一些由操作系统自行启动的进程属于这类。

Privileged Time (特权时间百分比) 是指进程中的线程在特权模式下执行代码所花时间的百分比。在调用 Windows 系统服务时,该服务通常在特权模式下运行,以便访问系统专有数据。在用户模式下执行的线程无法访问这些数据。对系统的调用可以是显式的,也可以是隐式的,例如页面错误或中断。与某些早期操作系统不同,Windows 除了使用用户模式和特权模式这种传统保护方法外,还使用进程边界来保护子系统。除了在进程中的特权时间内出现,Windows 代表应用程序执行的某些操作还可能出现在其他子系统进程中。

(3)%Processor Time ——-CPU的占用率

处理器执行行非空闲线程的时间百分比。如果该值持续超过95%,表明瓶颈是CPU,可考虑增加一个处理器或换一个更快的处理器。

(4)Interrupts/sec———中断速率

CPU每秒处理的中断数,反映系统运行的繁忙程度。大多数的系统时钟每隔 10 毫秒中断处理器一次,形成了间隔活动的后台。

(5)working set—分配给进程的内存总数

它包括共享内存以及正在使用虚拟内存的私有内存,监控working set是非常重要的,因为当内存不足的时候,操作系统会整理进程的working set和paging。进程的working set是由操作系统分配给进程的物理内存总量。

(6)Private Bytes———进程私占字节数

当前进程独占的字节数,计数器有明显的增长,表明可能存在内存泄漏。

* CPU 的分析比较直观,直接看%Processor Time,CPU的利用率即可,一般超过80%,可能存在瓶颈,关键是要监控后台日志或进程,找出CPU利用率高的原因。有时候CPU的利用率就是很高,但是平均响应时间和吞吐量也很高,这表明系统的处理能力很好,可以通过扩充服务器来降低服务器的压力*

【2.3】Memory–内存

(1)Available MBytes——-物理内存的可用数

指计算机上可用于运行处理的有效物理内存的字节数量。这个计数器只显示上一次观察到的值;它不是一个平均值。

至少要有10%的物料内存值,如果Available MBytes值一直很小(4M或是更小),说明计算机总的内存可能不足,或某程序没有放内存。怀疑有内存泄露 ,则重点关注该项。

(2)Cache Bytes–系统工作集的总大小

系统工作集的总大小,其包括以下代码或数据驻留在内存中的那一部分:系统缓存、换页内存池、可换页的系统代码(Ntoskrnl.exe和驱动程序),以及系统映射的视图。从字面意思上看,仅仅是指系统缓存,其实不然。
Cache Bytes Memory\System Cache Resident Bytes、Memory\System Driver Resident Bytes、Memory\System Code Resident Bytes 和 Memory\Pool Paged Resident Bytes的总和。

(3)Committed Bytes–提交的(不是保留的)虚拟内存字节数

Committed Bytes 是指已被提交的(不是保留的)虚拟内存字节数。此数并不一定代表页面文件的使用量,因为它包含了物理内存中从未被换出过的私有提交页面。当然,如果一个进程完全是非驻留的,则它代表所使用的页面文件数量。Windows的地址空间有三种状态。一种是COMMITED,表明该地址空间已和一块内存相联系;一种是RESERVED,表明该地址空间虽未与一块内存相联系但今后可能会用到,需要保留;一种是FREE,表明该地址空间与内存没有联系。

(4)Page Faults/sec ——处理器每秒钟处理的错误页数

当进程引用特定的虚拟内存页,该页不在其在主内存的工作集当中时,将出现页面错误

如果该页位于待机列表(说明已经位于主内存中),或被共享该页的其它进程所使用,该错误被称为软错误(用Transition Fault/sec计数器衡量),则错误处理不会导致从磁盘读取该页;如果该页必须从硬盘上重新读取时,被称为硬错误。许多处理器可以在有大量软错误的情况下继续操作。但是,硬错误可以导致明显的拖延。

如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。

(5)Pages/sec(including Pages Read/sec and Pages Write/sec)

——处理器每秒从磁盘读取或写入的总页数

Pages/sec 是指为解析硬页错误从磁盘读取或写入磁盘的页数。(当处理程序请求 不在本身工作集或物理内存其它地方中的代码或数据,而必须要从磁盘上检索时就会出现硬页错误)。这个计数器设计成可以显示导致系统范围延缓类型错误的主要指示器。

如果pages/sec持续高于几百,那么您应该进一步研究页交换活动。有可能需要增加内存,以减少换页的需求(你可以把这个数字乘以4k就得到由此引起的硬盘数据流量)。Pages/sec 的值很大不一定表明内存有问题,而可能是运行使用内存映射文件的程序所致。

由于过多的页交换要使用大量的硬盘空间,因此有可能将导致将页交换内存不足与导致页交换的磁盘瓶径混淆。因此,在研究内存不足不太明显的页交换的原因时,您必须跟踪如下的磁盘使用情况计数器和内存计数器:
Physical Disk\ % Disk Time
Physical Disk\ Avg.Disk Queue Length

如果 Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec页面读取操作速率很低,则可能存在磁盘瓶径。但如果队列长度增加的同时,页面读取操作速率并未降低,说明内存不足。

(6)Page Reads/sec—读取磁盘以解析硬页面错误的次数

表示为了解决硬错误而从硬盘上读取的页数。

(7)System Cache Resident Bytes–文件系统缓存可换页的操作系统代码的字节大小

此值只包括当前的物理页面,而不包括当前未使用的虚拟内存页面。它不等于“任务管理器”上显示的系统缓存值。因此,此值会比文件系统缓存使用的实际虚拟内存要小。此值是 Memory\System Code Resident Bytes 的组件,它代表当前在物理内存里的所有可换页的操作系统代码。

(8)Pool Nonpaged Bytes——非分页池的字节数

Pool Nonpaged Bytes 指在非换页池中的字节数,非换页池是指系统内存(操作系统使用的物理内存)中可供对象(指那些在不处于使用时不可以写入磁盘上而且只要分派过就必须保留在物理内存中的对象)使用的一个区域。在访问数比较固定的情况下,Pool Nonpaged Bytes是比较固定的,如果访问数逐步增加,该值会缓慢的增加。 Memory/Process怀疑是内核模式进程导致了泄露 ,则重点关注该项。

(9)Pool Paged Bytes–换页池中的字节数

Pool Paged Bytes 指在换页池中的字节数,换页池是系统内存(操作系统使用的物理内存)中可供对象(在不处于使用时可以写入磁盘的)使用的一个区域。也需要观察Server\Pool Paged Failures,页面池分配失败的次数。非零表示计算机的物理内存或页面文件太小。

* 可以直接看可用内存大小,但是会存在这样一个问题比如分给中间件(tomcat,weblogic之类)的内存就2g,系统的最大内存是4g,即使中间件的内存全部使用,系统的内存使用率也才50%,所以,监控监控内存还要监控jvm,才能从本质上找出问题。还可以从另一个方面验证系统是否存在内存泄露的情况,比如系统压测一段时间以后,平均响应时间越来越长,tps 越来越低,系统内存也没有完全被使用,但是每次重启服务或者机器后,系统又恢复之前的样子,此时很可能存在jvm内存泄露的问题。 *

【2.4】Server—服务器

(1)Bytes Total/sec (Bytes Sent/sec +Bytes Received/sec )——字节传输速率

为发送和接收字节的速率之和,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较。参考值:该值和目前网络的带宽相除,结果应该小于50%。

(2)Pool Paged Failures—分页池的失败数

从分页池分配时失败的次数。这种失败说明计算机的物理内存或分页文件太小。

(3)Pool Nonpaged Bytes(server)

服务器正在使用的不可分页计算机内存的字节数。该值对于确定 Windows NT 注册表中MaxNonpagedMemoryUsage的值非常有用。

(4)Pool paged Bytes(server)

服务器当前正在使用的可分页计算机内存的字节数。该值有助于确定MaxPagedMemoryUsage参数的最佳值。

【2.5】System–系统

(1)File Data Operations/sec——进程入交换率

在计算机的所有逻辑磁盘上读取和写入操作的综合速度。

(2)Process or Queue Length———-处理列队中的线程数

指处理列队中的线程数,它只计数就绪的线程,而不计数运行中的线程。

如果处理器列队中总是有两个以上的线程,通常表示处理器堵塞。这个计数仅显示上一次观察的值;而不是一个平均值。它的参考值一般小于2,如果持续高于2个并且处理器的利用率一直很低,有可能是处理器出现瓶颈。

(3)Context switches /sec ——上下文交换率

Context Switches/sec 指计算机上的所有处理器全都从一个线程转换到另一个线程的综合速率。当正在运行的线程自动放弃处理器时出现上下文转换,由一个有更高优先就绪的线程占先或在用户模式和特权(内核)模式之间转换以使用执行或分系统服务。它是在计算机上的所有处理器上运行的所有线程的Thread: Context Switches/sec 的总数并且用转换数量衡量。在系统和线程对象上有上下文转换计数器

频繁的页交换将降低系统性能。减少页交换将显著提高系统响应速度

【2.6】线程

(1)Threads——-线程数(object)

当前全部线程数

(2)Bytes Total/sec (Bytes Sent/sec + Bytes Received/sec)——-字节传输速率

为发送和接送字节的速率之和,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的宽带比较。参考值:该值和目前的网络宽带的宽带相除,结果应该小于50%。

(4)Free Megabytes–汇报磁盘上没被分配的字节的量

 

【3】常规计数器

收集操作系统服务器的服务器性能信息,包括Processor、磁盘、网络、内存

Processor 处理器

1.1 % Processor Time指处理器用来执行非闲置线程时间的百分比。通过此计数器可以确定服务器当前CPU使用百分比。

1.2 % Privileged Time是在特权模式下进程线程执行代码所花时间的百分比。当调用 Windows 系统服务时,此服务经常在特权模式运行,以便获取对系统专有数据的访问。

PhysicalDisk物理磁盘(某个RAID)

2.1 Avg. Disk Queue Length等待请求的队列长度,若此值过大,说明磁盘存在瓶颈,自然磁盘延迟的值也会过大。

2.2 Avg. Disk sec/Read;Avg. Disk sec/Transfer;Avg. Disk sec/Write这三个计数器表示磁盘每次读写需要多少时间,表示磁盘的延迟情况,以秒为单位,若延迟超过25mm表示磁盘性能较差。

LogicalDisk逻辑磁盘(某个卷)

3.1 % Free Space某个磁盘的空闲百分比;Free Megabytes 磁盘剩余大小MB

3.2 Disk Read Bytes/sec;Disk Transfers/sec;Disk Write Bytes/sec这三个计数器表示每秒磁盘的读写情况,表示磁盘的IO性能(iops)

Memory 内存

4.1 Available Mbytes可以内存大小MB,此内存能立刻分配给一个进程或系统使用。它等于分配给待机(缓存的)、空闲和零分页列表内存的总和。

4.2 Cache Bytes 系统使用的内存

4.3 Commit Limit可以申请的内存总大小(虚拟内存和物理内存);Committed Bytes已经使用的内存大小(虚拟内存和物理内存);均是以Byte(字节)为单位。

4.4 Free System Page Table Entries指系统当前未使用的页表项数目。表示内存是否空闲。

4.5 Page Faults/sec 每秒出错页面的数量,也就是未在内存中命中的页面数。因此伴随着Pages/sec计数器是由于出错页面从磁盘读取数据页的速度。此值越大说明内存可能存在一定瓶颈,或者存在大量数据存取。

Network Interface 网络接口

5.1 Current Bandwidth指以位/每秒估计的网络接口的当前带宽。对于那些带宽不变的或无法估计出准确数据的界面,这个值为名义带宽。

5.2 Bytes Received/sec;Bytes Sent/sec;Bytes Total/sec每秒种发送和接收的字节数,表示当前网络的使用情况。

5.3 Output Queue Length输出数据包队列,此值大于2说明传输存在延迟。

5.4 Packets Outbound Discarded 被选为丢弃的数据包数目,丢弃的原因可能是释放缓冲空间。Packets Outbound Errors 由于错误不能传输的数据包数目

5.5 Packets Received Discarded 被选为丢弃的数据包数目,丢弃的原因可能是释放缓冲空间。Packets Received Errors 由于错误不能传输的数据包数目

【4】深入disk与memory

【4.1】disk磁盘

Physical Disk:

单次IO大小

Avg.Disk Bytes/Read
Avg.Disk Bytes/Write

IO响应时间

Avg.Disk sec/Read
Avg.Disk sec/Write

IOPS

DiskReads/sec
DiskWrites/sec
DiskTransfers/sec

IO吞吐率

DiskBytes/sec
DiskRead Bytes/sec
DiskWrite Bytes/sec

磁盘有两个重要的参数:Seek time、Rotational latency。

正常的I/O计数为:①1000/(Seek time+Rotational latency)*0.75,在此范围内属正常。当达到85%的I/O计数以上时则基本认为已经存在I/O瓶颈。理论情况下,磁盘的随机读计数为125、 顺序读计数为225。对于数据文件而言是随机读写,日志文件是顺序读写。因此,数据文件建议存放于RAID5上,而日志文件存放于RAID10或 RAID1中。

附:

15000 RPM:150随机IOPS
10000 RPM:110随机IOPS
5400 RPM:50随机IOPS

 

下面假设在有4块硬盘的RAID5中观察到的Physical Disk性能对象的部分值:

 

Avg. DiskQueue Length 12 队列长度
Avg. DiskSec/Read .035 读数据所用时间ms
Avg. DiskSec/Write .045 写数据所用时间ms
DiskReads/sec 320 每秒读数据量
DiskWrites/sec 100 每秒写数据量
Avg. DiskQueue Length,12/4=3,每块磁盘的平均队列建议不超过2。
Avg. DiskSec/Read一般不要超过11~15ms。
Avg. DiskSec/Write一般建议小于12ms。

 

从上面的结果,我们看到磁盘本身的I/O能力是满足我们的要求的,原因是因为有大量的请求才导致队列等待,这很可能是因为你的SQL语句导致大量的表扫描所致。在进行优化后,如果还是不能达到要求,下面的公式可以帮助你计算使用几块硬盘可以满足这样的并发要求:

Raid 0 -- I/Os per disk = (reads +writes) / number of disks
Raid 1 -- I/Os per disk = [reads +(2 * writes)] / 2
Raid 5 -- I/Os per disk = [reads +(4 * writes)] / number of disks
Raid 10 -- I/Os per disk = [reads +(2 * writes)] / number of disks

【4.2】memory内存

https://www.cnblogs.com/gered/p/14128912.html

 

【5】SQL Server计数器

SQL Server中的Access Methods对象提供监视访问数据库中的逻辑数据的计数器;Buffer Manager计数器监视对磁盘上的数据库也的物理访问。

Access Methods 存取方式

Access Methods监视用于访问数据库中存储的数据的方法有助于确定是否可以通过添加或修改索引、添加或移动分区、添加文件或文件组、对索引进行碎片整理或者重写查询来提高查询性能。 Access Methods 计数器也可用于监视数据库中数据、索引和可用空间的数量,从而指示每个服务器实例的数据卷和碎片。索引的碎片过多会降低性能。

1.1 Page Splits/sec每秒由于索引页溢出而发生的页拆分数。此数据越大表示某表的修改频率较高,且要确认该索引是否适合建立该字段上。

1.2 Workfiles Created/sec每秒创建的工作文件数

1.3 Worktables Created/sec每秒创建的工作表数

Buffer Manager 缓存管理

监视用于存储数据页的内存;读取和写入数据库页时的物理io等,通过此对象可以判断是否存在物理内存瓶颈可以了解服务器的查询性能等等。

2.1 Buffer cache hit ratio命中高速缓冲区页的百分比。若此值过低说明可能内存存在一定瓶颈

2.2 Database pages缓冲池中数据库内容的页数

2.3 Page life expectancy页指示页面在没有引用的情况下,在此节点的缓冲池中停留的时间(以秒计)。此值若降低说明,服务器频繁查询数据库中数据。

2.4 Checkpoint pages/sec Checkpoint的执行频率,若执行的频率过高。则说明服务器过于频繁的修改数据。

2.5 Lazy writes/sec 若懒写入过于频繁,说明没有空闲的缓冲区供使用,内存可能存在一定瓶颈。“惰性编写器”是一个系统进程,用于成批刷新脏的过期的缓冲区(包含更改的缓冲区,必须将这些更改写回磁盘,才能将缓冲区重用于其他页),并使它们可用于用户进程。

Memory Manager 内存管理

监视总体的服务器内存使用情况,以估计用户活动和资源使用,有助于查明性能瓶颈。

3.1 Memory Grants Pending指定等待工作空间内存授权的进程总数。指等待分配内存的进程数量,若此值过高或内存或磁盘存在一定瓶颈。

3.2 Target Server Memory (KB);Total Server Memory (KB)理想上能使用内存量与内存管理器提交的内存量。若此两值存在差异则说明内存异常。

General Statistics 常规统计

4.1 User Connections;Logins/sec;Logouts/sec 用户并发情况

4.2 Processes blocked当前阻塞数量

4.3 Temp Tables For Destruction等待被清除系统线程破坏的临时表/表变量数。无用的临时表和表变量。

SQL Statistics; Wait Statistics请求与等待统计

5.1 Batch Requests/sec;SQL Compilations/sec;SQL Re-Compilations/sec每秒的请求、编译和重编译的次数,这些对于优化供参考。

5.2 Lock waits等待锁的进程数。

5.3 Log write waits等待写入日志缓存的进程数

5.4 Page IO latch waits与页 I/O 闩锁相关的统计信息。用于判断内存或磁盘的瓶颈情况

5.5 Page latch waits与页闩锁(不包括 I/O 闩锁)相关的统计信息。用于判断内存或磁盘的瓶颈情况

Databases针对数据库级别

6.1 Log Flush Wait Time;Log Flushes/sec日志刷新等待和频率,若数据异常则可能存在磁盘瓶颈

6.2 Transactions/sec 事务数

Locks

7.1 Lock Requests/sec;Lock Timeouts/sec锁请求频率;锁超时频率

7.2 Number of Deadlocks/sec 死锁情况。

 

https://www.cnblogs.com/gered/p/14128912.html