一、远程连接到Windows服务器,使用windows系统自带工具进行收集性能数据
1、Windows服务器中自带的性能监控工具叫做PerformanceMonitor,在开始-运行中输入‘Perfmon.msc’,然后回车即可运行。通过界面,控制面板\所有控制面板项\管理工具\性能监视器也能打开
打开后,页面展示
2、添加计数器
性能>数据收集器集>用户定义[右击]>新增‘数据收集器集’>手动创建高级>下一步
勾选创建数据日志>性能计数器>【下一步】
点击“添加”→选择计数器
点击选中的可用计数器>【添加】>【确定】
【确定】>【下一步】
选择目录后,点击【完成】
查看新增的计数器,输出地方为日志输出地址
3、选择日志数据源格式
选择用户定义下的数据收集器集>右键属性>性能计数器,日志格式选择“逗号分隔”(即csv格式)
4、开始启动数据采集,选择用户定义下的数据收集器集>右键属性>开始
此时,输出有地址了
5、用EXCEL将数据转换为折线图,并分析性能情况
二、分析性能情况
(1)内存泄露判断
●虚拟内存字节数(VirtualBytes)应该远大于工作集字节数(Workingset),如果两者变化规律相反,比如说工作集增长较快,虚拟内存增长较少,则可能说明出现了内存泄露的情况。
●对于Workingset、PrivateBytes、Available bytes这些计数器,如果在测试期间内数值持续增长,而且测试停止后位置在高水平,则也说明存在内存泄露。
●Windows资源监控中,如果Process\PrivateBytes计数器和Process\WorkingSet计数器的值在长时间内持续升高,同时Memory\Available
bytes计数器的值持续降低,则很可能存在内存泄漏。
(2)CPU使用情况
●一般平均不要超过70%,最大不要超过90%(好:70%、坏:85%、很差:90%)
(3)tps(每秒处理事务的数量,在SOAPUI中进行统计)
●一般在10-100,不同应用程序具体值不同
1234567891011121314151617
几个常用参数的参考值: CPU:%Processor Time:表示CPU的使用率,如果值大于80表示CPU的处理调度能力偏低。 硬盘:%Disk Time:表示硬盘的I/O操作的频率(繁忙时间),如果值大于80表示硬盘I/O调度能力偏低。AverageDiskQueueLength:表示硬盘I/O操作等待队列的长度,如果值大于2表示硬盘I/O调度能力偏低。 内存 Pages/Sec:表示系统对虚拟内存每秒钟的访问次数,如果值大于20表示有内存方面的问题。(有可能是物理内存偏低,也有可能是虚拟内存没有配置正确。一般情况下虚拟内存应为物理内存的1.5-2倍) Committed Bytes and AvailableBytes:Committed Bytes表示虚拟内存的大小,AvailableBytes表示剩余可用内存的大小。正常情况下,AvailableBytes减少,pages(页面数)应该增加,提供页面交换。
如果AvailableBytes的值很小表示物理内存偏低。当关闭一些应用以后,Committed Bytes应该减少,AvailableBytes应该增加。因为关闭的进程释放了之前占用的内存资源。如果相应的值没有发生变化,那么该进程就可能造成了内存泄漏。 CacheBytes:表示系统缓存的大小。如果值大于4M表示物理内存偏低。
三、关于计数器的选择
perfmon的计数器主要分四种:处理器性能计数器、内存性能计数器、磁盘性能计数器以及网络性能计数器。
以下为监控服务器常用的计数器:
常用的性能对象与指标
性能对象
计数器
提供的信息
Processor
%IdleTime
%IdleTime是处理器在采样期间空闲的时间的百分比
Processor
%ProcessorTime
%ProcessorTime指处理器用来执行非闲置线程时间的百分比。计算方法是,测量范例间隔内非闲置线程活动的时间,用范例间隔减去该值。这个计数器是处理器活动的主要说明器,显示在范例间隔时所观察的繁忙时间平均百分比。
Processor
%UserTime
%UserTime指处理器处于用户模式的时间百分比。用户模式是为应用程序、环境分系统和整数分系统设计的有限处理模式。
Memory
AvailableBytes
AvailableBytes显示出当前空闲的物理内存总量。当这个数值变小时,Windows开始频繁地调用磁盘页面文件。如果这个数值很小,例如小于5MB,系统会将大部分时间消耗在操作页面文件上。
Memory
%CommittedBytesinUse
%CommittedBytesInUse是Memory:CommittedBytes与Memory:CommitLimit之间的比值。(Committedmemory指如果需要写入磁盘时已在分页文件中保留空间的处于使用中的物理内存。CommitLimit是由分页文件的大小而决定的。如果扩大了分页文件,该比例就会减小)。这个计数器只显示当前百分比;而不是一个平均值。
Memory
PageFaults/sec
PageFaults/sec是指处理器处理错误页的综合速率。用错误页数/秒来计算。当处理器请求一个不在其工作集(在物理内存中的空间)内的代码或数据时出现的页错误。这个计数器包括硬错误(那些需要磁盘访问的)和软错误(在物理内存的其它地方找到的错误页)。许多处理器可以在有大量软错误的情况下继续操作。但是,硬错误可以导致明显的拖延。这个计数器显示用上两个实例中观察到的值之间的差除以实例间隔的持续时间所得的值。
NetworkInterface
BytesTotal/sec
BytesTotal/sec是发送和接收字节的速率,包括帧字符在内。
NetworkInterface
Packets/sec
Packets/sec为发送和接收数据包的速率。
PhysicalDisk
%BusyTime
%BusyTime指磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。
PhysicalDisk
Avg.DiskQueueLength
Avg.DiskQueueLength指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。
PhysicalDisk
CurrentDiskQueueLength
CurrentDiskQueueLength指在收集操作数据时在磁盘上未完成的请求的数目。它包括在快照内存时正在为其提供服务中的请求。这是一个即时长度而非一定间隔时间的平均值。多主轴磁盘设备可以一次有多个请求操作,但是其它同时发生的请求为等候服务。这个计数器可能会反映一个暂时的高或低的列队长度,但是如果在磁盘驱动器存在持续负载,可能值会总是很高。请求等待时间与这个列队的长度减去磁盘上的主轴成正比。这个差值应小于2才能保持良好的性能。
Logical
Disk
%FreeSpace
%FreeSpace是所选定的逻辑磁盘驱动器上总的可用空闲空间的百分比。
Logical
Disk
FreeMegabytes
可用的MB显示磁盘驱动器上尚未分配的空间。
以下为监控进程常用的计数器:
Process对象的主要指标
性能对象
计数器
提供的信息
Process
%PrivilegedTime
%PrivilegedTime是在特权模式下处理线程执行代码所花时间的百分比。当调用Windows系统服务时,此服务经常在特权模式运行,以便获取对系统专有数据的访问。在用户模式执行的线程无法访问这些数据。对系统的调用可以是直接的(explicit)或间接的(implicit),例如页面错误或间隔。
Process
%ProcessorTime
%ProcessorTime是所有进程线程使用处理器执行指令所花的时间百分比。指令是计算机执行的基础单位。线程是执行指令的对象,进程是程序运行时创建的对象。此计数包括处理某些硬件间隔和陷阱条件所执行的代码。
Process
%UserTime
%UserTime指处理线程用于执行使用用户模式的代码的时间的百分比。应用程序、环境分系统和集合分系统是以用户模式执行的。Windows的可执行程序、内核和设备驱动程序不会被以用户模式执行的代码损坏。
Process
CreatingProcessIDvalue
CreatingProcessIDvalue指创建该进程的父进程号。
Process
ElapsedTime
该进程运行的总时间(用秒计算)。
Process
HandleCount
由这个处理现在打开的句柄总数。这个数字等于这个处理中每个线程当前打开的句柄的总数。
Process
IDProcess
IDProcess指这个处理的特别的识别符。IDProcess号可重复使用,所以这些IDProcess号只能在一个处理的寿命期内识别那个处理。
Process
IODataBytes/sec
处理从I/O操作读取/写入字节的速度。这个计数器为所有由本处理产生的包括文件、网络和设备I/O的活动计数。
Process
IODataOperations/sec
本处理进行读取/写入I/O操作的速率。这个计数器为所有由本处理产生的包括文件、网络和设备I/O的活动计数。
Process
IOOtherBytes/sec
处理给不包括数据的I/O操作(如控制操作)字节的速率。这个计数器为所有由本处理产生的包括文件、网络和设备I/O的活动计数。
Process
IOOtherOperations/sec
本处理进行非读取/写入I/O操作的速率。例如,控制性能。这个计数器为所有由本处理产生的包括文件、网络和设备I/O的活动计数。
Process
IOReadBytes/sec
处理从I/O操作读取字节的速度。这个计数器为所有由本处理产生的包括文件、网络和设备I/O的活动计数。
Process
IOReadOperations/sec
本处理进行读取I/O操作的速率。这个计数器为所有由本处理产生的包括文件、网络和设备I/O的活动计数。
Process
IOWriteBytes/sec
处理从I/O操作写入字节的速度。这个计数器为所有由本处理产生的包括文件、网络和设备。
Process
IOWriteOperations/sec
本处理进行写入I/O操作的速率。这个计数器为所有由本处理产生的包括文件、网络和设备I/O的活动计数。
Process
PageFaults/sec
PageFaults/sec指在这个进程中执行线程造成的页面错误出现的速度。当线程引用了不在主内存工作集中的虚拟内存页即会出现PageFault。如果它在备用表中(即已经在主内存中)或另一个共享页的处理正在使用它,就会引起无法从磁盘中获取页。
Process
PageFileBytes
PageFileBytes指这个处理在Pagingfile中使用的最大字节数。PagingFile用于存储不包含在其他文件中的由处理使用的内存页。PagingFile由所有处理共享,并且PagingFile空间不足会防止其他处理分配内存。
Process
PageFileBytesPeak
PageFileBytesPeak指这个处理在Pagingfiles中使用的最大数量的字节。
Process
PoolNonpagedBytes
PoolNonpagedBytes指在非分页池中的字节数,非分页池是指系统内存(操作系统使用的物理内存)中可供对象(指那些在不处于使用时不可以写入磁盘上而且只要分派过就必须保留在物理内存中的对象)使用的一个区域。这个计数器仅显示上一次观察的值;而不是一个平均值。
Process
PoolPagedBytes
PoolPagedBytes指在分页池中的字节数,分页池是系统内存(操作系统使用的物理内存)中可供对象(在不处于使用时可以写入磁盘的)使用的一个区域。这个计数器仅显示上一次观察的值;而不是一个平均值。
Process
PriorityBase
这次处理的当前基本优先权。在一个处理中的线程可以根据处理的基本优先权提高或降低自己的基本优先权。
Process
PrivateBytes
PrivateBytes指这个处理不能与其他处理共享的、已分配的当前字节数。
Process
ThreadCount
在这次处理中正在活动的线程数目。指令是在一台处理器中基本的执行单位,线程是指执行指令的对象。每个运行处理至少有一个线程。
Process
VirtualBytes
VirtualBytes指处理使用的虚拟地址空间的以字节数显示的当前大小。使用虚拟地址空间不一定是指对磁盘或主内存页的相应的使用。虚拟空间是有限的,可能会限制处理加载数据库的能力。
Process
VirtualBytesPeak
VirtualBytesPeak指在任何时间内该处理使用的虚拟地址空间字节的最大数。
Process
WorkingSet
WorkingSet指这个处理的WorkingSet中的当前字节数。WorkingSet是在处理中被线程最近触到的那个内存页集。如果计算机上的可用内存处于阈值以上,即使页不在使用中,也会留在一个处理的WorkingSet中。当可用内存降到阈值以下,将从WorkingSet中删除页。如果需要页时,它会在离开主内存前软故障返回到WorkingSet中。
Process
WorkingSetPeak
WorkingSetPeak指在任何时间这个在处理的WorkingSet的最大字节数。