zoukankan      html  css  js  c++  java
  • 性能测试工具 之 性能计数器

    Windows内置工具 之 性能计数器:

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

    • 如果发现有内存泄露,性能计数器可以被用来检查托管还是本地内存分配的问题。ProcessPrivate 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)); }

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

  • 相关阅读:
    OSPF
    【今日CS 视觉论文速览】 24 Jan 2019
    【今日CS 视觉论文速览】Wed, 23 Jan 2019
    【今日CS 视觉论文速览】 21 Jan 2019
    【Processing学习笔记】安装与入门
    【今日CS 视觉论文速览】Part2, 18 Jan 2019
    【今日CS 视觉论文速览】Fri, 18 Jan 2019
    【今日CS 视觉论文速览】Thu, 17 Jan 2019
    【今日CS 视觉论文速览】Part2, 16 Jan 2019
    【今日CS 视觉论文速览】Wed, 16 Jan 2019
  • 原文地址:https://www.cnblogs.com/xinaixia/p/5945482.html
Copyright © 2011-2022 走看看