1. Windows性能计数器分析
对象 |
计数器 |
分析 |
processor |
%processor time |
建议阈值85% |
memory |
Available bytes |
建议阈值少于4MB需要添加内存; 另外,又建议至少要有10%的物理内存值 |
Pages reads/sec |
Page Reads/sec 是指为解析硬页错误而读取磁盘的次数,如果该值一直持续较大,表明可能内存不足 建议阈值30(5?),大数值表示磁盘读而不是缓存读 | |
Pages writes/sec |
Page Writes/sec 是指为了释放物理内存空间而将页写入磁盘的次数 | |
Pages Input/sec |
Pages Input/sec 指为解决页错误从磁盘上读取的页数 | |
Pages Output/sec |
Pages Output/sec 是指为了释放物理内存空间而写入磁盘的页数 如果该值远远大于Pages Input/sec,可能有内存泄露 | |
Pages/sec |
Pages/sec 是指为解析硬页错误从磁盘读取或写入磁盘的页数 建议阈值20 | |
Network interface (对于TCP/IP) |
Bytes received/sec |
该数据结合Bytes total/sec看 |
Bytes sent/sec |
该数据结合Bytes total/sec看 | |
Bytes total/sec |
推荐不要超过带宽的50% | |
Packets/sec |
根据实际数据量大小,无建议阈值,该数据结合Bytes total/sec看 | |
Physical disk |
Disk reads/sec |
取决于硬盘制造商的规格,检查磁盘的指定传送速度,以验证此速度没有超出规格 |
Disk writes/sec |
取决于硬盘制造商的规格,检查磁盘的指定传送速度,以验证此速度没有超出规格 又:上两值相加,应小于磁盘设备的最大容量 | |
%Disk Time |
建议阈值90% | |
Current disk queue length Avg. disk queue length(如果使用RAID设备,%Disk Time计数器显示的值可以大于100%。如果大于100%,则使用Avg. disk queue length计数器决定正在等待磁盘访问的系统请求的平均数) |
不超过磁盘数的1.5~2倍 如果上两值始终较高,可以考虑升级磁盘驱动器或将某些文件移动到其他磁盘或服务器 |
2.一些注意事项
1. 如果监视不超过4个小时,则每15秒更新一次比较合理;如果将监视系统8个小时或更长时间,则设置的间隔不要小于300秒
2. 个人认为测试报告结果同时还要附上图参考,因为单靠最小、最大和平均值还不能说明问题
3. 与物理磁盘计数器的数据不同,逻辑磁盘计数器的数据默认情况下不是由操作系统搜集。要获得逻辑驱动器或存储卷的性能计数器数据,必须在命令提示符下键入diskperf –yv。默认情况下,操作系统使用diskperf –yd命令包含物理驱动器数据。使用命令diskperf的详细信息,请在命令提示符下键入diskperf -?。
4. 通常,决定性能是否可以接受是一种主观判断,随用户环境的变化而明显地变化。
5. 内存不足是计算机系统中的严重性能问题最常见的原因。工作站响应速度很慢最有可能是内存和处理器问题造成的;服务器更容易受到磁盘和网络问题的影响。
6. 在程序启动时,每个程序的Process\%Processor Time值迅速攀升、降低,然后稳定。注意程序启动时处理器的峰值非常重要;你可能要暂时忽略监视数据中高的启动值,以获得典型程序使用处理器情况的更精确的图片。
7. 当内存减少时,操作系统开始通过从活动较少的程序的工作集(working set)中获得内存来补充,因此,将看到一个程序工作集的增大,而其他程序的值减少。如果系统中没有足够的内存来满足所有活动程序的要求,将发生内存页交换,程序性能将受到影响。
8. 如果发生了内存泄漏,Process\Private Bytes计数器和Process\Working set 计数器的值往往会升高,同时Available bytes会降低。
9. 如果Process不见了,修改注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PerfProc\Performance 下的Disable Performance Counters值为0.
3. Unix性能计数器分析
计数器 |
描述 |
Average load |
Ready状态并发进程的平均数 |
Collision rate |
在以太网上侦察到的每秒冲突数 |
Context switches rate |
每秒进程或线程之间的切换数 |
CPU utilization |
CPU使用时间的百分比 |
Disk rate |
磁盘传输的速率 |
Incoming packets error rate |
接受以太网包每秒的错误 |
Incoming packets rate |
每秒接受的以太网包 |
Interrupt rate |
每秒设备的中断次数 |
Outgoing packets error rate |
发送以太网包每秒的错误 |
Outgoing packets rate |
每秒发送以太网包 |
Page in rate |
每秒读到物理内存的页数 |
Page out rate |
每秒写到页面文件和从物理内存移动的页数 |
Paging rate |
每秒读到物理内存或者写到页面文件的页数 |
Swap in rate |
交换的进程数 |
Swap out rate |
交换的进程数 |
System mode CPU utilization |
系统模式下CPU使用时间的百分比 |
User mode CPU utilization |
用户模式下CPU使用时间的百分比 |
4.SQL Server性能计数器分析
计数器 |
描述 |
Buffer manager/buffer cache hit ratio |
指可在缓冲池中找到而不需要从磁盘中读取(物理I/O)的页面的百分比。如果该值较低则可能存在内存不足或不正确的索引 |
General statistics object/user connections |
指系统中活动的SQL连接数。该计数器的信息可以用于确定系统得最大并发用户数 |
Locks/lock requests/sec |
指每秒请求的锁个数。通过优化查询来减少读取次数,可以减少该计数器的值。 |
Locks/lock timeouts/sec |
指每秒由于等待对锁的授权的锁请求数,理想情况下,该计数器的值为0 |
Locks/lock waits/sec |
指每秒无法立刻得到授权而超时的锁请求数,理想情况下,该计数器的值应该尽可能为0 |
Locks/number of deadlocks/sec |
指每秒导致死锁的锁请求数。死锁对于应用程序的可伸缩性非常有害,并且会导致恶劣的用户体验。该计数器必须为0 |
Memory manager/memory grants pending |
指每秒等待工作空间内存授权的进程数。该计数器应该尽可能接近0,否则预示可能存在着内存瓶颈 |
SQL statistics/batch requests/sec |
指每秒向服务器提交批的请求次数。该计数器被用来确定系统的负载大小 |
SQL statistics/ SQL compilations/sec |
指每秒编译数。理想状态下该计数器的值应该低,如果batch requests/sec计数器的值非常接近该计数器,那么可能存在大量的特殊SQL调用 |
SQL statistics/ re- compilations/sec |
指每秒的重新编译数。该计数器的值越低越好。存储过程在理想情况下应该只编译一次,然后被他们的执行计划重复利用。如果该计数器的值较高,或许需要换个方式编写存储过程,从而减少重编译的次数 |