方式一:
命令行 perfmon
方式二:图形化操作
控制面板→系统与安全→管理工具→性能监视器
在采集数据前,需要做好相应的收集器创建。
监视工具性能监视器,右键新建数据收集器集。
点击【完成】后,在数据收集器集用户定义下面就多了一个监视器集,即myperf。
接下来,对myperf计数器集添加计数器。
如下,设置以逗号分隔,即csv文件,后面可以用excel打开。
设置每1秒钟采集一次数据。
设置文件格式。比如文件名中带年月日时分秒(20221202),可以设置为yyMMddhhmmss。
点击开始后,前面的图标变为如下。
Excel打开csv格式的文件,即可以看到每个1s记录的各项计数器数据。
在工具中添加计数器时,可以看到很多计数器。计数器分为大类,和子类。
对于我们分析CPU占用过高、进程异常奔溃、内存泄漏等问题,主要关注各个进程CPU占用情况和各个进程内存使用情况。即Process大类和Memory大类。这个工具有点不太好的地方是:它不能统计每个进程各自占用内存数据,只能统计总内存数,但是可以换一种方式达到想要的效果,如果发现有内存不断增长的情况发生,可以将怀疑的进程纳入监控,监控其内存的Private Bytes, Handle Count、thread count等计数器,从而帮助缩小查找代码的范围。
几个典型的参数介绍如下表所示。
计数器大类 | 计数器名称 | 作用 |
---|---|---|
Memory (内存) | Available Bytes | 可用内存数(单位:B) |
Available KBytes | 可用内存数(单位:KB) | |
Available MBytes | 可用内存数(单位:MB) | |
Process (进程) | ID Process | 进程ID,唯一标识一个进程。当有多个同名的进程时,可以用这个ID来却分,比如有6各chrome.exe进程,他们的ID是不相同的,可以以此来区分。 |
%Processor Time | 占用CPU的时间比 | |
Private Bytes | 含义: 分配的私有虚拟内存总数,即私有的、已提交的虚拟内存使用量。即:Task Manager中的VM Size。内存泄露时表现的现象是私有虚拟内存的递增。 | |
Handle count | 句柄数 。怀疑有句柄泄漏时可以监控该值。 | |
Thread count | 线程数。如果存在进程处理越来越慢的情况,可以监控该值,判断是否有僵尸线程导致塞满栈空间的情况。 |
1、性能计数器的使用可以参考:
https://blog.csdn.net/miaomiaotiaopi/article/details/125970647
2、更多计数器的含义可以参考
https://blog.51cto.com/u_14181351/5692351