性能监视器是一个 Microsoft 管理控制台 (MMC) 管理单元,提供用于分析系统性能的工具。仅从一个单独的控制台,即可实时监视应用程序和硬件性能,自定义要在日志中收集的数据,定义警报和自动操作的阈值,生成报告以及以各种方式查看过去的性能数据。

  启动 Windows 性能监视器:搜索栏输入 perfmon --> 回车。

一、常用计数器

  运行截图:

  常用的监视计数器:

对象

计数器

说明

.NET CLR Exceptions # of Exceps Thrown / sec 显示每秒钟抛出的异常数。这包括 .NET 异常和转换为 .NET 异常的未受管异常。性能随此数目的增大而下降。
.NET CLR Memory # Bytes in all Heaps 显示其他四个计数器的总和:Gen 0 堆大小、Gen 1 堆大小、Gen 2 堆大小以及大对象堆大小。此计数器表示 GC 堆上当前分配的内存(以字节为单位)。此计数器的值总是比 Process\Private Bytes 的值小,Process\Private Bytes 对进程的 MEM_COMMIT 区域进行计数。Private Bytes minus # Bytes in all Heaps 就是由未受管对象提交的字节数。
用于监视可能的内存泄漏,或者监视受管或未受管对象的内存使用率是否过大。
.NET CLR Remoting Remote Calls/sec 显示每秒调用的远程过程调用的数目。远程过程调用是对调用方所在应用程序域之外的任何对象的调用。此计数器不是一段时间内的平均值;它显示最近两个样本观测值的差除以取样间隔所得的结果。
.NET Data Provider for Oracle NumberOfFreeConnections 连接池中可用连接的数量。
.NET Data Provider for SqlServer NumberOfFreeConnections 连接池中可用连接的数量。
Process % Processor Time 显示所有进程线程用于执行指令的已用处理器时间的百分比。指令是计算机中的基本执行单位;线程是执行指令的对象;进程是运行程序时创建的对象。此计数中包含了处理某些硬件中断和陷阱条件时执行的代码。如果总的处理器时间较长,请使用此计数器确定导致 CPU 利用率很高的进程。
Process Handle Count 显示此进程当前打开的句柄的总数。此数字是此进程中的每个线程当前打开的句柄总数。特定进程中句柄计数的增加可能是发生句柄泄漏的错误进程的症状,这将导致服务器上发生性能问题。此问题并不一定会出现,但是在一段时间内对其进行监视以确定是否发生句柄泄漏十分重要。
Process Thread Count 这个进程中正在活动的线程数目。指令是在处理器中基本的执行单位,线程是指执行指令的对象。每个运行的进程至少有一个线程。
SQLServer:General Statistics User Connections 显示sqlserver目前连接的数量,而不是用户数。如果该计数器超过255,那么你需要将sqlserver的"Maximum Worker Threads" 的配置值设置得比缺省值255高。如果连接的数量超过可用的线程数,那么sqlserver将共享线程,这样会影响性能。"Maximum Worker Threads"需要设置得比你服务器曾经达到的最大连接数更高。
SQLServer:Locks Number of Deadlocks/sec 死锁的数量/秒,死锁对应用程序的可伸缩性非常有害,并且会导致恶劣的用户体验。该计数器的值必须为0。
LogicalDisk % Free Space % Free Space 是所选逻辑磁盘驱动器上总计可用空间所占的百分比。
PhysicalDisk Disk Read Bytes/sec 指在读取操作时从磁盘上传送字节的速率。
PhysicalDisk Disk Write Bytes/sec 指在写入操作时传送到磁盘上的字节速度。

  默认状况下,以下两个计数器的开关是关着的,需要配置下 %WINDIR%\microsoft.net\Framework64\v4.0.30319\Config\machine.config 如下开关的(32和64位操作系统的路径不同),否则数据采集不到。

.NET Data Provider for Oracle NumberOfFreeConnections
.NET Data Provider for SqlServer NumberOfFreeConnections

  增加配置,并重启相应的进程(重启服务 或 重启IIS等)。

<system.diagnostics><switches><add name="ConnectionPoolPerformanceCounterDetail" value="4"/></switches>
</system.diagnostics>

二、用C#采集计数器的数据

  虽然Windows自带了perfmon工具,并可以生成报告以及以各种方式查看过去的性能数据,但是有时候我们还是定义自己的一些曲线或者报表,那么就需要将性能监视器的数据收集起来,C#提供了PerformanceCounterCategory(性能对象),PerformanceCounter(性能计数器组件)两个类,提供了操作性能监视器的一些方法,这样我们就能把数据读取出来保存到数据库中或者文件中,可用来随意产生一些曲线或报表,或者报警Mail等。

using System;
using System.Diagnostics;
using System.Threading;namespace TestApplication
{public class Program{static void Main(string[] args){Console.WriteLine(GetPerfCount("Process", "% Processor Time", "_Total"));Console.WriteLine(GetPerfCount(".NET CLR Memory", "# Bytes in all Heaps", "_Global_"));Console.WriteLine(GetPerfCount("SQLServer:General Statistics", "User Connections"));Console.Read();}/// <summary>/// 获取计数器样本并为其返回计算所得值--有实例的计数器(对于大多数的计数器)/// </summary>/// <param name="categoryName"></param>/// <param name="counterName"></param>/// <param name="instance"></param>/// <returns></returns>public static float GetPerfCount(string categoryName, string counterName, string instance){PerformanceCounter counter = new PerformanceCounter{CategoryName = categoryName,CounterName = counterName,InstanceName = instance,MachineName = ".",ReadOnly = true};counter.NextValue();Thread.Sleep(200);try{if (counter != null){return counter.NextValue();}}catch (Exception){return -2f;}return -1f;}/// <summary>/// 获取计数器样本并为其返回计算所得值--无实例的计数器/// 比如categoryName=SQLServer:General Statistics,counterName=User Connections/// </summary>/// <param name="categoryName"></param>/// <param name="counterName"></param>/// <returns></returns>public static float GetPerfCount(string categoryName, string counterName){PerformanceCounter counter = new PerformanceCounter{CategoryName = categoryName,CounterName = counterName};counter.NextValue();Thread.Sleep(200);try{if (counter != null){return counter.NextValue();}}catch (Exception){return -2f;}return -1f;}}
}

“性能监视器”监视系统性能的基本设置相关推荐

  1. 使用win10性能监视器获得系统性能数据

    可以使用 Windows 性能监视器实时检查运行程序影响计算机性能的方式并通过收集日志数据供以后分析使用. Windows 性能监视器使用可合并进数据收集器集的性能计数器.事件跟踪数据和配置信息. & ...

  2. 深聊性能测试,从入门到放弃之: Windows系统性能监控(一) 性能监视器介绍及使用。

    性能监视器介绍及使用 1.引言 2.性能监视器 2.1 打开方式 2.2 基本介绍 2.3 计数器介绍 2.3.1 处理器性能计数器 2.3.2 内存性能计数器 2.3.3 网络性能计数器 2.4 创 ...

  3. 【性能监视器】监视查看CPU、内存等数据

    以内存为例: 1.WIN+S (win11) 搜索 性能监视器打开 (也可以通过命令行WIN+R,搜索 perfmon) ![在这里插入图片描述](https://img-blog.csdnimg.c ...

  4. 自定义Windows性能监视器

    Windows 性能监视器是一个很好用的自带监视工具,对于一些基本简单的监视需求可以轻松满足.本文主要总结了一下如何将自己应用中的一些性能数据暴露到性能监视器上方便管理. 什么?不知道什么是Windo ...

  5. 结合“性能监视器” 排查、处理性能瓶颈导致应用吞吐率等指标上不去的问题...

    双11备战前夕,总绕不过性能压测环节,TPS 一直上不去 / 不达标,除了代码上的问题外,服务器环境.配置.网络.磁盘.CPU 亦是导致性能瓶颈的重要一环,本文旨在分享最近项目性能压测过程中的排查经验 ...

  6. 利用电脑自带的性能监视器进行资源监控

    本文来源:http://blog.163.com/jack_test/blog/static/166620663201061594459936 [摘要] 在性能测试中,你要对测试结果进行数据分析,就要 ...

  7. windows性能监视器的使用

    一般在客户端通过LoadRunner对服务器进行压力测试,都需要实时监控服务器端的系统资源,我们通常在LoadRunner的Controller中配置监控windows资源,其实我们可以用window ...

  8. windows 性能监视器图表中各曲线的意义

    如果要查看系统的内存占用.CPU占用等性能信息,大家通常会想到Windows的任务管理器,不过在Windows 2000/XP中还有一个功能更为强大的工具,可以查看更为详细的系统性能信息.通过这些数据 ...

  9. 用Windows XP自带的性能监视器测试

    http://www.360doc.com/content/09/1213/18/294500_11035221.shtml 怎样分析windows 性能监视器图表中各曲线的意义 2009-12-13 ...

最新文章

  1. Groovy安装与入门实例
  2. 磁盘阵列的创建与管理
  3. OpenCV学习记录(二):自己训练haar特征的adaboost分类器进行人脸识别
  4. 机载计算机网络拓扑结构设计,计算机网络课程设计-网络拓扑结构设计.doc
  5. 查看依赖树_如何在基于 Ubuntu 或 Debian 的 Linux 发行版中查看一个软件包的依赖...
  6. innobackupex实现导出和导入单张表
  7. oracle初始化序列值,如何修改序列(Sequence)的初始值(START WITH)
  8. web 错误 处理你的请求时出错_最强辅助Jmeter技术干货:JMeter中处理器的另类玩法...
  9. 经常看到网吧无盘系统,那操作系统装在哪?
  10. Frenet Frame
  11. android ios emoji兼容,web端怎么和移动端emoji表情兼容
  12. WTEditor(windows窗口标题栏文字修改工具)绿色单文件版V1.0 | windows窗口标题文字怎么修改?
  13. 【3dmax千千问】初学3dmax插件神器第20课:3dmax渲染教程|效果图大师和疯狂模渲大师怎么使用3dmax软件自带的渲染器去设计并渲染三维效果图场景的3dmax模型?
  14. VMware安装流畅系统Chrome OS以及国产系统FedyOS(基于Chrome OS的二次开发)
  15. 千篇一律的秃顶,各有各的顽皮,1组图让你了解程序员的可爱
  16. App首次进入引导界面
  17. 自适应滤波器原理——新息过程
  18. PS设置图片部分透明
  19. 《金粉世家》- 女性从失败的婚姻中觉醒
  20. MT4/MT5使用dll调用matlab

热门文章

  1. Batis-iBatis基本操作(增删改查)
  2. 推荐:PHPCMS v9 安全防范教程!
  3. asp.net 2.0
  4. XP-SP3 安装之后怎么禁止更新
  5. STM32工作笔记0091---ADC模数转换实验-M3
  6. ARCGIS地理信息系统学习笔记001--认识ARCGIS
  7. c++的学习笔记之二
  8. 杭电2108判断凹凸边形
  9. android java pipe_Java-使用Dagger 2进行Android单元测试
  10. JAVA redis 常用函数