上期我们讲到LoadRunner性能测SQL监控与调优,这期我们讲LoadRunner性能测试CPU瓶颈。
CPU瓶颈
如果发现CPU的使用率过高,通常是高于85%,那么很有可能是CPU出现瓶颈,接下来需要进一步分析是什么原因导致CPU的使用率过高的,通常需要分析的读数器包括:System-Processor Queue LengthProcessor-%Privilage TimeProcessor-%User TimeProcessor-%User Time-sqlservrSQLServer:SQL Statistics-SQL Compilations/secSQLServer:SQL Statistics-SQL Re-Compilations/secProcessor-%Privilage Time和Processor-%User Time这两个计数器主要介绍其它的几个计数器,具体如下:System-Processor Queue Length:处理器的队列长度,正常情况下服务器不忙碌的时候不可能出现处理器排队的现象,只有当服务器处于忙碌的状态时,才可能出现处理器队列的问题,所以当处理器出现排队现象,那么说服务器和性能受到影响,一般情况下处理器的队列长度不超过CPU个数。
Processor-%User Time-sqlservr:该计数器显示SQL Server进程所消耗的CPU时间数量,通过分析该计数器,可以分析过高的用户模型所消耗的CPU的时间,是否是由SQL Server进程引起的。
SQLServer:SQL Statistics-SQL Compilations/secSQLServer:SQL Statistics-SQL Re-Compilations/sec这两计数器表示执行计划编译与重编译率,对于一台服务器,执行计划的重用率至少应该在90%以上,即在执行过程中,最多只有10%的查询计划需要重新进行编译,如果当执行过程中需要重新编译的查询计划过多,那么将导致消耗过高的CPU资源。
磁盘瓶颈
在执行查询计划过程中,最多的是对磁盘进行写入与读出数据的操作,所在SQL Server服务器应该尽可能的避免频繁的在磁盘与内存间进行传递数据,以降低对服务器性能的影响,为了解决这个问题,SQL Server使用缓冲高速缓存(buffer cache)和计划高速缓存(plan cache),其中buffer cache用于预载数据,plan cache用于加载检索数据的方法是否是最优计划。如果对磁盘进行调优,在调优之前需要获得磁盘性能的一个基线值,否则测试过程中如果遇到磁盘出现队列或出现延迟现象,就无法确定这个问题是否正常。
如果怀疑磁盘出现瓶颈,通常需要监控的计数器包括:PhysicalDisk- Avg.Disk Queue LengthPhysicalDisk- Avg.Disk sec/ReadPhysicalDisk- Avg.Disk sec/WriteSQL Server:Access Methods-Full scans/secSQL Server:Access Methods-Page Splits/sec其中PhysicalDisk- Avg.Disk Queue LengthPhysicalDisk- Avg.Disk sec/Read和PhysicalDisk- Avg.Disk sec/Write三个计数器SQL Server:Access Methods-Full scans/sec:该计数器表示每秒钟完全扫描索引或完全扫描基本表的数目,在数据库设计过程中应该尽量降低全表扫描的次数,特别是对于那些大表,如果进行全表扫描将会直接导致性能下降,如果扫描频率大于1次,那么说明缺少索引或索引较差。
SQL Server:Access Methods-Page Splits/sec:该计数器表示每秒钟页面拆分数量,在执行插入或更新计划时,如果当前的数据页没有足够的空间来完成这些操作,那么就必须增加新页来完成插入或更新操作,过多的拆分页会损害服务器的性能。
Wait Statistics监控
新的SQLServer版本中添加一个新的性能监控对象SQLServer:WaitStatistics,该计数器报告有关等待状态的信息,也包含一些全局的等待信息,SQLServer:WaitStatistics性能对象的12个计数器,具体的见表。 表WaitStatistics计数器
其中每个计数器对象包含4个实例,这4个实例都是相同的,具体的见表。
表计数器对象实例常用的几个计数器对象为:SQLServer:Wait Statistics- Lock waits、SQLServer:Wait Statistics- Memory grant queue waitsSQLServer:Wait Statistics- Page IO latch waits,具体内容如下:SQLServer:Wait Statistics- Lock waits:该计数器主要显示进程等待获得锁的时间,通过该计数器可以对进行获得锁的能力进行评估,对判断加锁很有帮助。
SQLServer:Wait Statistics- Memory grant queue waits:该计数器表示正在等待内存授权的进程数,也可以理解为进程式在队列中等待所花费的时间长度。
SQLServer:Wait Statistics- Page IO latch waits:统计与页 I/O 闩锁相关的统计信息,SQL Server要求锁存器来确保数据同步,在锁存器的过程中可能存在超时现象,这样将直接影响SQL Server的性能。