选择用于监视的计数器 (单击该图像获得较大视图)
在 PerfMon 中,请检查名为 Context Switches/sec 的性能计数器(参阅图 2)。此计数器显示为了为其他等待线程执行任务必须从操作系统计划程序(而非 SQL 计划程序)中取出线程的次数。对于与其他应用程序(如 IIS)或其他供应商应用程序服务器组件共享的数据库系统,上下文切换可能更加频繁。我使用的 Context Switches/sec 阈值大约是服务器中处理器数量的 5000 倍。在启用了超线程并且对 CPU 的利用率达到中高程度的系统上,该阈值还可更高。如果 CPU 利用率和上下文切换经常同时超出各自的阈值,这就表明出现了 CPU 瓶颈。如果经常发生这种情况,并且您的系统已过时,则应该开始计划购买更多或处理速度更快的 CPU。有关详细信息,请参阅侧栏上的“超线程”。
性能计数器
|
计数器对象
|
阈值
|
注释
|
% Processor Time
|
处理器
|
> 80%
|
潜在因素包括内存不足、低查询计划重用率和未经优化的查询。
|
Context Switches/sec
|
系统
|
> 5000 x 处理器数
|
潜在因素包括服务器上的其他应用程序、在同一服务器上运行了多个 SQL Server 实例和超线程已打开。
|
Processor Queue Length
|
系统
|
> 5 x 处理器数
|
潜在因素包括服务器上的其他应用程序、频繁的编译或重新编译以及在同一服务器上运行了多个 SQL Server 实例。
|
Compilations/sec
|
SQLServer:SQL Statistics
|
趋势
|
与 Batch Requests/sec 进行比较。
|
Re-Compilations/sec
|
SQLServer:SQL Statistics
|
趋势
|
与 Batch Requests/sec 进行比较。
|
Batch Request/sec
|
SQLServer:SQL Statistics
|
趋势
|
与每秒编译和重新编译数进行比较。
|
Page Life Expectancy
|
SQLServer:Buffer Manager
|
< 300
|
内存不足的潜在因素。
|
Lazy Writes/sec
|
SQLServer:Buffer Manager
|
趋势
|
大量数据缓存刷新或内存不足的潜在因素。
|
Checkpoints/sec
|
SQLServer:Buffer Manager
|
趋势
|
根据 PLE 和 Lazy Writes/sec 评估检查点。
|
Cache Hit Ratio:SQL Plans
|
SQLServer:Plan Cache
|
< 70%
|
表示计划重用率低。
|
Buffer Cache Hit Ratio
|
SQLServer:Buffer Manager
|
< 97%
|
内存不足的潜在因素。
|
|
|
|
|
当 CPU 的利用率很高时,还需要监视 SQL Server Lazy Writer(在 SQL Server 2000 中)或 Resource Monitor(在 SQL Server 2005 中)。通过称为 Resource Monitor 的资源线程刷新缓冲区和过程缓存可增加 CPU 时间。Resource Monitor 是一个 SQL Server 进程,它确定要保留的页以及需要从缓冲池刷新到磁盘的页。缓冲区和过程缓存中的每一个页最初都分配了成本,成本代表将该页放置到缓存时所耗费的资源。Resource Monitor 每次扫描该页,该成本值都会减少。当请求要求提供缓存空间时,系统会根据与每个页关联的成本刷新这些页;值最低的页将首先被刷新。Resource Monitor 的活动可通过 PerfMon 中 SQL Server:Buffer Manager 对象下的 Lazy Writes/sec 性能计数器进行跟踪。您应该跟踪查看该值的趋势,以确定系统上的典型阈值。该计数器通常与 Page Life Expectancy 和 Checkpoints/sec 计数器一起查看,以确定是否内存不足。
Page Life Expectancy (PLE) 计数器帮助确定是否内存不足。PLE 计数器显示数据页在缓冲区高速缓存中停留的时间。行业中该计数器的可接受阈值为 300 秒。如果在很长一段时间内显示的值平均小于 300 秒,则表明从内存中刷新数据页的频率过高。如果出现这种情况,将导致 Resource Monitor 负载加重,从而导致处理器的活动增多。应该将 PLE 计数器和 Checkpoints Pages/sec 计数器一起进行评估。在系统中出现检查点时,缓冲区高速缓存中的脏数据页被刷新到磁盘,从而导致 PLE 值下降。Resource Monitor 进程是真正将这些页刷新到磁盘的机制,所以在出现这些检查点期间,您应该还会看到 Lazy Writes/sec 值增加。如果完成检查点后 PLE 值立即增加,您可以忽略这种短暂现象。另一方面,如果发现经常低于 PLE 阈值,则此时非常适合使用多出的内存缓解您的问题,同时将一些资源释放回 CPU。所有这些计数器都可在 SQL Server:Buffer Manager 性能对象中找到。