博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.NET 性能测试工具 -- 性能计数器
阅读量:2503 次
发布时间:2019-05-11

本文共 2156 字,大约阅读时间需要 7 分钟。

内容预告:

  • Windows内置工具(性能计数器)
  • 事件跟踪器
  • 时间分析
  • 内存分配分析
  • 内存使用量分析
  • 其他分析

性能计数器:直接win+R运行 perfmon.exe 即可打开。可以在以下场景下使用:

  • 如果发现有内存泄露,性能计数器可以被用来检查托管还是本地内存分配的问题。Process\Private Bytes可以查看所有进程分配的private内存(包括GC堆)和.NET CLR Memory\# Bytes in All Heaps可以查看托管内存。
  • 如果ASP.NET程序有反常的行为,在ASP.NET目录下可以看详细信息,比如请求时间, 请求超时时间, 请求等待时间, 请求执行时间等计数器可以确认负载情况。Errors Total/Sec可以查看程序非正常的异常计数,各种cache可以查看缓存是否有效利用。
  • 如果WCF中严重依赖数据库并且分布式事务处理失败的话,ServiceModelService目录可以查明问题。Calls Outstanding, Calls Per Second, and Calls Failed Per Second等计数器可以定位负载,Transactions Flowed Per Second计数器报告事务数量,SQL SERVER目录的MSSQL$INSTANCENAME:Transactions 和MSSQL$INSTANCENAME:Locks可以看出事务执行的问题,比如过多的锁,以及死锁。

 

自定义性能计数器的日志和警告:(笔者的电脑是win8)。步骤如下:

  1. 在性能计数器的左边,展开Data Collector Sets。
  2. 依次是User Defined -> 右键 -> new - >Data Collector Sets。
  3. 输入自定义的名称,,选择Create manually(Advanced)【手动创建(高级)】,NEXT
  4. 选择 Create Data Logs,选中Performance counter,NEXT
  5. 选择目录,NEXT
  6. 选择 Open properties for this data collector set,NEXT
  7. 继续配置其他信息,然后OK
  8. 选中刚才自定义的结点,右键-> start
  9. 即开始运行了,也可以右键->stop停止
  10. 可以通过右键Latest Report导出报告。
  11. 在结果窗口可以添加或删除计数器。

自定义性能计数器:你可以通过.NET的System.Diagnostics.PerformanceCounter类获取性能数据。下面是需要自定性能计数器的场景:

  • 开发大型系统时,用一个基础库用来汇报性能数据,可以方便在代码级别输出性能信息。
  • 开发服务器系统时,有响应客户端请求,处理请求,返回数据的功能,应该汇报请求的处理率,错误计数等类似的统计信息做为性能信息汇报出来。
  • 开发高可靠性Windows服务且关联硬件时,应该汇报硬件的运行状况信息,以及和硬件间的交互等数据。

下面的代码会输出一个单实例的性能计数器数据并定时更新:

 

public static void CreateCategory() {if (PerformanceCounterCategory.Exists("Attendance")) {PerformanceCounterCategory.Delete("Attendance");}CounterCreationDataCollection counters = new CounterCreationDataCollection();CounterCreationData employeesAtWork = new CounterCreationData("# Employees at Work", "The number of employees currently checked in.",PerformanceCounterType.NumberOfItems32);PerformanceCounterCategory.Create("Attendance", "Attendance information for Litware, Inc.",PerformanceCounterCategoryType.SingleInstance, counters);}public static void StartUpdatingCounters() {PerformanceCounter employeesAtWork = new PerformanceCounter("Attendance", "# Employees at Work", readOnly: false);updateTimer = new Timer(_ = > {employeesAtWork.RawValue = AttendanceSystem.Current.EmployeeCount;}, null, TimeSpan.Zero, TimeSpan.FromSeconds(1));}

虽然性能计数器很不错,但是不能用在高性能的程序里。接下来介绍事件跟踪器。

转载地址:http://yllgb.baihongyu.com/

你可能感兴趣的文章
VNPY - 事件引擎
查看>>
MongoDB基本语法和操作入门
查看>>
学习笔记_vnpy实战培训day04_作业
查看>>
OCO订单(委托)
查看>>
学习笔记_vnpy实战培训day06
查看>>
回测引擎代码分析流程图
查看>>
Excel 如何制作时间轴
查看>>
matplotlib绘图跳过时间段的处理方案
查看>>
vnpy学习_04回测评价指标的缺陷
查看>>
读书笔记_量化交易如何建立自己的算法交易01
查看>>
设计模式05_单例
查看>>
设计模式06_原型
查看>>
设计模式07_建造者
查看>>
设计模式09_代理模式
查看>>
设计模式10_桥接
查看>>
满屏的指标?删了吧,手把手教你裸 K 交易!
查看>>
不吹不黑 | 聊聊为什么要用99%精度的数据回测
查看>>
量化策略回测唐安奇通道
查看>>
量化策略回测DualThrust
查看>>
量化策略回测DCCV2
查看>>