5.1.4 性能计数器
性能计数器是反映系统性能的重要参考指标。如何通过查看这些计数器来观察系统性能是需要通过平时积累的。本节仅列出常用的5类计数器(关于IIS、SQLServer、MySQL计数器请参看本篇附录D)。如何使用这些计数器,是一个非常复杂,而且有一定深度的问题,本书中不做详细介绍,读者若有兴趣,可以购买相关的书籍或者查阅相关的网站。
1.Windows计数器
Windows计数器见表5-1。
表5-1 Windows计数器
对象 |
计数器 |
分析 |
processor |
%processor time |
建议阈值85% |
memory |
Available bytes |
建议阈值少于4MB需要添加内存 另外,又建议至少要有10%的物理内存值 |
Pages reads/sec |
Pages Read/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 |
取决于硬盘制造商的规格,检查磁盘的指定传送速度,以验证此速度没有超出规格;[J1] 以上两值相加应小于磁盘设备的最大容量 |
|
%Disk Time |
建议阈值为90% |
|
Current disk queue length Avg. disk queue length(如果使用RAID设备,%Disk Time计数器显示的值可以大于100%。如果大于100%,则使用Avg. disk queue;length计数器决定正在等待磁盘访问的系统请求的平均数 |
不超过磁盘数的1.5~2倍 如果以上两值始终较高,可以考虑升级磁盘驱动器或将某些文件移动到其他磁盘或服务器 |
在Windows下,可以通过“开始菜单->控制面板->管理工具->性能”查看计数器,如图5-3所示。
图5-3 在Windows下查看计数器
在Windows中我们主要关注以下几个计数器:
(一)对于内存:
- Available Bytes:计算机可用于运行有效处理的有效物理内存。应该不少于4M,如果低于或者pages/second,持续处于峰值,考虑物理内存不够。
- Memory pages/second:解决硬页错误读取或写入磁盘的速度,应该保持或者接近0。
- Page Faults/sec:每秒出错页面的的平均数量。
(二)对于磁盘:
- %Disk Time:所选磁盘驱动器在忙于读写请求服务所用的时间百分比。正常值<10%。
- Average Disk Queue Length:读取和写入请求的平均队列数,正常值<0.5。
- Average Disk Second/Read:秒计算在此盘上读取的平均时间。
- Average Disk Second/Write:秒计算在此盘上写入的平均时间。
(三)对于CPU:
- %Processor Time:处理器用来执行非闲置线程时间的百分比,持续>80%就存在问题了。
- %User Time:处理器处于用户模式的时间百分比(应用程序、环境分系统、整数分系统)占整个Processor Time很大,应用程序就出现问题了。
- %Privileged Time:处理器处于特权模式的时间百分比(调用Windows系统服务)。
2.Linux计数器
Linux计数器主要如下。
- Collision rate:在以太网上侦察到的每秒冲突数。
- Context switches rate:每秒进程或线程之间的切换数。
- CPU utilization:CPU使用时间的百分比。
- Disk rate:磁盘传输的速率。
- Incoming packets errorrate:接受以太网包每秒的错误。
- Incoming packets rate:每秒接受的以太网包。
- Interrupt rate:每秒设备的中断次数。
- Outgoing packets errorrate:发送以太网包每秒的错误。
- Outgoing packets rate:每秒发送的以太网包。
- Page in rate:每秒读到物理内存的页数。
- Page out rate:每秒写到页面文件和从物理内存移动的页数。
- Paging rate:每秒读到物理内存或者写到页面文件的页数。
- Swap in rate:交换的进程数。
- Swap out rate:交换的进程数。
- System mode CPUutilization:系统模式下CPU使用时间的百分比。
- User mode CPUutilization:用户模式下CPU使用时间的百分比。
在Linux中,除了采用计数器以外,我们还可以通过运行一些命令来分析系统性能。
(一)对于CPU:
(1)>vmstatinterval count
其中:interval为多长时间输出一次,count为次数。
如图5-4所示,其中:
图5-4 vmstat命令
- r:可运行的内核线程平均数。
- b:每秒VMM等待队列的核心线程平均数。
- in:在某一段时间间隔中观察到的每秒设备中断数。
- cs:在某一段时间间隔中观察到的每秒上下文切换数。
- us:用户方式下花费的百分比。
- sy:CPU在系统方式下执行一个进程花费的百分比。
- id:没有使用本地磁盘I/O时CPU空闲或等待时间百分比。
- wa:详细显示了暂时挂在本地磁盘I/O和NFS加载的磁盘的CPU百分比。
(2)>ps -ef
如图5-5所示,其中C列显示最近CPU显示情况。
图5-5 ps -ef命令
(3)>ps -au
如图5-6所示,其中%CPU列显示自从进程启动以来,分配给进程的百分比等于进程CPU时间/进程持续时间×100%
图5-6 ps -au命令
(4)>top命令
如图5-7所示,显示实时运行情况。
图5-7 top命令
(二)对于内存:
(1)>vmstat interval count
其中:
interval:执行次数,count:每次显示次数。
如图5-8所示,其中:
图5-8 vmstat interval count命令
- si:自上次取样以来从磁盘交换出来的比特数。
- so:自上次取样以来交换到磁盘的比特数。
(2)>vmstat -s
如图5-9所示,获得系统摘要信息。
(3)>procinfo
如图5-10所示,显示物理内存与swap交换区的详细信息。
图5-9 vmstat -s命令
图5-10 procinfo命令
顾翔凡言:
敏捷具有适用性,即使用了敏捷,也不要做成假敏捷,掌握敏捷的真谛。