Processor:%Processor Time大于70%有问题
System:Processor Queue Length大于处理器数量的2倍有问题
Memory:Pages/Sec每秒从内存中分配磁盘或者从磁盘分页到内存的页数。不能一直大于1。
Memory:Available Bytes可用内存数,大于50MB。
Sql Server:BufferManger:Buffer Cache Hit Ratio在缓冲区找到数据而不是去磁盘读取的时间百分比。低于90%说明有IO压力。越大越好。
Sql Server:BufferManger:Page Life Expectancy数据在缓冲区停留而不被数据操作引用的时间,最小约300秒,越大越好。
PhysicalDisk:Avg.Disk Queue Length应该小于物理磁盘数乘以2.
PhysicalDisk:% Disk Time不能一直超过60%
SQL ServerAccessMethods:Page Splits/sec页上没有空间后,插入就会产生分页操作。越大越不好。
The list is right, and my suggestion is that you need to get your baselines for your servers.
对象 | 计数器 | 描述 | 值 |
Physical Disk | Current Disk Queue Length
| 未完成磁盘请求的数量 |
|
%Disk Time | 磁盘繁忙时间的百分比 | 平均值<85% | |
Avg.Disk Sec/Read | 从磁盘读取的平均时间(单位毫秒) | 平均值<10ms | |
Avg.Disk Sec/Write | 磁盘写入的平均时间(单位毫秒) | 平均值<10ms |
对象(实例) | 计数器 | 描述 | 值 |
Memory | Available Bytes | 空闲物理内存 | 与系统相关 |
Pages/esc | 硬页面错误率 | 平均值<50 | |
|
|
| |
SQLServer:Buffer Manager | Buffer cache hit ratio | 由缓冲区提供的请求百分比 | 平均值>90 |
| Page Life Expectancy | 页在缓冲中花费的时间 | 平均值>300 |
| Lazy writes/sec | 从缓冲区中丢弃的过期页面 | 平均值<20 |
SQLServer:Memory | Manager Memory Grants Pending | 等待授予内存的进程数量 | 平均值 = 0 |
| Target Server Memory(KB) | SQL Server所能消耗的最大物理内存 |
|
| Total Server Memory(KB ) | 当前分配给SQL Server的总内存。 | 接近于Target Server Memory |
我之前设计了一个性能监测系统,在这个系统中,会监测比较少的几个性能参数,若连续一段时间高于阀值则报警,再去检查更多的性能计数器。一直在监测的计数器如下:
LogicalDisk-->% Free Space,监控Disk使用率,防止磁盘用完。
LogicalDisk-->Avg. Disk sec/Transfer,监控Disk IO,若该值大于0.02,则需要关注磁盘读写问题
Memory-->Available MBytes,监控内存空闲大小,保证有200M以上的剩余内存
Processor-->% Processor Time,监控CPU使用率,保证小于90%
SQLServer:缓冲管理器-->缓存命中率,SQL Server基本健康指标,保证大于90%
SQLServer:缓冲管理器-->可用页,SQL Server内核内存使用情况,要长时间大于500