原文:https://www.jianshu.com/p/f82c2b726ecf

一、Perfmon简介、性能监控指标、性能对象指标

Perfmon:提供了图表化的系统性能实时监视器、性能日志和警报管理,可用于监视CPU使用率、内存使用率、硬盘读写速度、网络速度等,可以很方便地使用第三方工具进行性能分析。

1.常用的性能监控指标

Perfmon性能监控对象总共有上百个性能指标,我们关注一个系统的性能时,不可能关注这么多指标,有些性能指标对实际的应用系统影响并不大。但对一个Windows操作系统来说,CPU、内存(Memory)、磁盘(Disk)、网络(Network)等关键对象是性能监控中必不可少的项。

2.常用的性能对象与指标

性能对象 计数器 提供的信息
Processor % ldle Time 处理器在采样期间空闲时间的百分比
  % Processor Time 指处理器用来执行非闲置线程时间的百分比。
(CPU占用率)
  % User Time 处理器处于用户模式的时间百分比
Memory Available Bytes 显示出当前空闲的物理内存总量。
该数值↓,说明Windows开始频繁地调用磁盘页面文件;该数值<5MB时,系统会将Available Memory Bytes的大部分时间消耗在操作页面文件上
  % Committed Bytes In Use 内存使用百分比,[Compitted Bytes / Commit Limit]的比值
  Page Faults/sec 指处理器处理错误页的综合速率,[错误页数/s]来计算
Network Interface Bytes Total/sec 发送和接收字节的速率,包括帧字符在内
  Packets/sec 发送和接收数据包的速率
Physical Disk % Busy Time 磁盘驱动器忙于为读or写入请求提供服务所用时间的百分比。
若该数值比较大,则硬盘有可能是瓶颈
  Avg. Disk Queue Length 磁盘队列的平均长度。磁盘完成对读取和写入请求的处理时间,磁盘数据吞吐量的外在表现
  Current Disk Queue Length 在收集操作数据时,磁盘上未完成的请求数目

以上的4个指标比较关键:
% Processor Time
% Committed Bytes In Use
Bytes Total/sec
% Busy Time

二、Perfmon的启用和监控设置

Perfmon 使用方法:

1.开始输入perfmon后回车,即可打开perfmon.exe

2.在perfmon.exe的左窗格中,单击【系统监视器】

3.在右窗格中单击右键,然后单击【添加计数器】

or 点击监控图上方的【+】也可以打开添加计数器的窗口

4.在“性能对象”列表中,选择所需的性能指标计数器类别,以在Perfmon.exe中显示对应指标的监控图形,然后单击【添加】-->【确认】

在计数器勾选区域:
选中监控图底部的某个计数器,右键【属性】,可编辑该计数器的线条颜色、宽度等样式

 

通过切换点击不同的计数器类别,可实时观察到所统计的【最新值、平均值、最小值、最大值、持续时间】

在监控图区域:
右键【属性】,可设置采样的持续时间(默认100s)、每间隔多少时间采样一次
右键【图形另存为】,可将本地性能监控的采样图保存到本地
右键【清除】,可将当前监控上的采样图清除,而后从左至右继续开始新的采样图

三、性能分析方法

1.内存分析方法

内存分析:用于判断系统有无内存瓶颈,是否需要通过增加内存等手段提高系统性能表现

内存分析的主要方法和步骤:
(1)首先查看Memory:% Commitued Bytes in Use指标
如果该指标数值比较大,系统可能出现了内存方面的问题,需要继续下面步骤进一步分析。
另外也可以查看Available Bytes,如果该值小,则说明可用内存不足,存在性能瓶颈。
(2)注意Pages/secPages Read/secPage Faults/sec的值
操作系统会利用磁盘较好的方式提高系统可用内存量or提高内存的使用效率,这三个指标直接反应了操作系统进行磁盘交换的频度。
Pages/sec值持续高于几百,可能有内存问题;Pages/sec值不一定大就表明有内存问题,可能是运行使用内存映射文件的程序所致。
Page Faults/sec说明每秒发生页面失效次数,页面失效次数越多,说明操作系统向内存读取的次数越多。此时需要查看Pages Read/sec的计数值,该计数器的阀值为5,如果计数值>5,则可以判断存在内存方面的问题。

2.处理器分析法

(1)首先看System:% Total Processor Time性能计数器的计数值
该计数器的数值体现服务器整体处理器的利用率,对多处理器的系统而言,该计数器体现的是所有CPU的平均利用率。如果该值持续超过90%,则说明整个系统面临着处理器方面的瓶颈,需要通过增加处理器来提高性能。
(2)其次查看每个CPU的% User Time
%User Time是系统的非核心操作消耗的CPU时间,如果该值较大,可以考虑是否能通过友好算法等方法降低这个值。如果该服务器是数据库服务器,%User Time值大的原因很可能是数据库的排序或是函数操作消耗了过多的CPU时间,此时可以考虑对数据库系统进行优化。
(3)研究系统处理器瓶颈:查看System:Processor Queue Length计数器的值
当该计数器的值 > (CPU数量的总数+1)时,说明产生了处理器阻塞。在处理器的% Process Time很高时,一般都随处理器阻塞,但产生处理器阻塞时,Processor:%Process Time 计数器的值并不一定很大,此时就必须查找处理器阻塞的原因。

3.磁盘I/O分析方法

(1)计算每磁盘的IO数
每磁盘的I/O数可用来与磁盘的I/O能力进行对比,如果经过计算得到的每磁盘I/O数超过了磁盘标称的I/O能力,则说明确实存在磁盘的性能瓶颈。

4.网络分析方法

(1)Network Interface:Bytes Total/sec
Bytes Total/sec为发送和接收字节的速率,可以通过该计数器值来判断网络链接速度是否是瓶颈,具体操作方法是用该计数器的值和目前网络的带宽进行比较。

Windows服务监控工具Perfmon的更多相关文章

  1. Windows性能监控perfmon工具的使用和性能指标的分析

    Windows性能监控工具perfmon的使用和性能指标分析 一.perfmon提供图表化的实时的性能监视器.性能日志.警报管理,能监控CPU的使用率.内存使用率.磁盘I/O(磁盘的读写速度).网络I ...

  2. DevOps之服务-监控工具

    唠叨话 关于德语噢屁事的知识点,仅提供精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <DevOps教程> <DevOps之服务-监控工具> 注:关于监控工具的具体 ...

  3. 基于SignalR实现B/S系统对windows服务运行状态的监测

    通常来讲一个BS项目肯定不止单独的一个BS应用,可能涉及到很多后台服务来支持BS的运行,特别是针对耗时较长的某些任务来说,Windows服务肯定是必不可少的,我们还需要利用B/S与windows服务进 ...

  4. C#创建、安装、卸载、调试Windows Service(Windows 服务)的简单教程

    前言:Microsoft Windows 服务能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面.这 ...

  5. 玩转Windows服务系列汇总

    玩转Windows服务系列汇总 创建Windows服务 Debug.Release版本的注册和卸载及其原理 无COM接口Windows服务启动失败原因及解决方案 服务运行.停止流程浅析 Windows ...

  6. 玩转Windows服务系列——给Windows服务添加COM接口

    当我们运行一个Windows服务的时候,一般情况下,我们会选择以非窗口或者非控制台的方式运行,这样,它就只是一个后台程序,没有界面供我们进行交互. 那么当我们想与Windows服务进行实时交互的时候, ...

  7. 玩转Windows服务系列——使用Boost.Application快速构建Windows服务

    玩转Windows服务系列——创建Windows服务一文中,介绍了如何快速使用VS构建一个Windows服务.Debug.Release版本的注册和卸载,及其原理和服务运行.停止流程浅析分别介绍了Wi ...

  8. 玩转Windows服务系列——Debug、Release版本的注册和卸载,及其原理

    Windows服务Debug版本 注册 Services.exe -regserver 卸载 Services.exe -unregserver Windows服务Release版本 注册 Servi ...

  9. C# 开发windows服务的一些心得

    最近在做一个windows服务的项目,发现并解决了一些问题,拿出来和大家分享一下,以下windows服务简称“服务” 文章会在适合时间更新,因为朋友们在不断提出新的意见或思路,感谢-.- 1.服务如何 ...

随机推荐

  1. uniapp打包发版到linux服务器步骤----H5端

    最近在写uni-app项目,项目打包部署到服务器后,搞了好一会一直打开是空白页,原来自己有几个地方疏忽了,现把步骤整理一下: 第1步:编辑配置 mainifest.json 文件 tip:运行的基础路 ...

  2. Maven系列(一) -- maven仓库的搭建

    从今天开始,我要写一个maven系列的文章,以帮助大家来更好的熟悉maven仓库,并且将自己优秀的的代码开源出去,一方面为开源做贡献,另一方面顺便提升自己的知名度,让我们把愉快的开始吧 为什么要搭建m ...

  3. vue触发事件的五个关键字

    v-on    vue中提供了v-on事件绑定    v-on:click='函数';    v-on可以使用@代替 vue  五个触发事件关键字    .stop 用于阻止冒泡    例如 div1 ...

  4. 一、CentOS6.8安装MySQL5.6

    一.官网下载rpm安装包 https://dev.mysql.com/downloads/ 版本选中如图中红色框 二.卸载旧mysql 1.检查是否安装有mysql rpm -qa | grep -i ...

  5. [JavaWeb基础] 029.OGNL表达式介绍

    1.OGNL概述 OGNL,全称为Object-Graph Navigation Language,它是一个功能强大的表达式语言,用来获取和设置Java对象的属性,它旨在提供一个更高的更抽象的层次来对 ...

  6. Servlet配置及生命周期

    1.设置Ecilipse快捷  file new 2.创建Servlet程序 1). 创建一个 Servlet 接口的实现类.              public class HelloServl ...

  7. 【汇总】 为园友写的皮肤制作工具 awescnb

    Awescnb, awesome cnblog. 简介 可能许多初来乍到的新手会被博客园经典的风格劝退,或者您是一个老园友,需要为您的博客定制一些功能(例如宣传公众号,文章目录.或者插入几个捐助二维码 ...

  8. SpringBoot 之 视图解析与模板引擎、 热部署、日志配置(四)

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一 . SpringBoot环境下的视图解析技术 1. JSP JSP 是我们常用的视图技术了,但是Sp ...

  9. Java实现 LeetCode 801 使序列递增的最小交换次数 (DP)

    801. 使序列递增的最小交换次数 我们有两个长度相等且不为空的整型数组 A 和 B . 我们可以交换 A[i] 和 B[i] 的元素.注意这两个元素在各自的序列中应该处于相同的位置. 在交换过一些元 ...

  10. Java实现 LeetCode 500 键盘行

    500. 键盘行 给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词.键盘如下图所示. 示例: 输入: ["Hello", "Alaska", & ...