开发者社区> 阿里云柳璃> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

WINDOWS主机的性能监控

简介:
+关注继续查看

性能监控

前言

最终的目的是了解SQL Server实例的运行,但每个实例是跑在windows上的,所以主机级别的稳定性也是不可或缺的,这篇文章主要围绕这张图的windows主机节点部分来讲。

一  工具

工欲善其事,必先利其器。要做windows的性能监控除了要了解我们关注的性能点外还要去准确的收集处理。收集这些数据的方式有很多,这里我主要讲我们监控中用到的两种工具:powershell和perfmon。

1.1. powershell

类似linux的shell,是微软为windows开发的壳程序,我们可以借助powershell编写很多脚本程序来完成一些自动化的工作。

 get-counter

get-counter是powershell获取windows performance counter的接口命令,而performance counter如同它的英文名一样代表了系统相关的性能计数器,也就是说我们可以用powershell来获取我们关注的metrics信息,当然performance counter的值也不只这么一种获取方式。

 get-wmiobject

WMI(Windows Management Instrumentation,Windows 管理规范)是一项核心的 Windows 管理技术,是对windows资源的一种抽象,通过它我们可以直接访问、配置、管理和监视近乎所有windows资源。同样通过powershell的get-wmiobject我们可以监控到所有资源。

1.2. perfmon

perfmon主要是windows系统自带的性能监控工具,它可以将我们关注的metrics以图形化的方式展现出来,并且还可以抓取一段时间的性能数据生成性能报告方便我们查看结果。

在我们的windows主机性能监控中主要借助powershell来获取监控数据,perfmon可以帮我们更加实时的查看问题也可以在做相关测试时用到。

二  metrics

2.1. CPU相关

%Processor Time

命令:Get-Counter -Counter ‘Processor(_Total)% Processor Time’

解释:获取本机所有处理器的使用率,瞬时值。它的计算方式是首先获得cpu执行空闲线程的时间,因为每个cpu上都有一个空闲线程,当没有任务的时候就执行空闲线程,通过计算空闲线程的执行时间进而得到cpu忙碌的时间。

公式:

问题:通过这个命令我们可以得到cpu瞬时的使用率,但是并不能很好的反映出一段时间的cpu使用情况,假使cpu在2分钟前非常忙碌并且已经产生瓶颈而我的监控粒度又比较粗,每5分钟取一次数据,那么我就无法得知cpu准确的使用情况,不能一下找出性能瓶颈可能会怀疑是磁盘或者内存的问题,这样非常耽误事儿。

解决:1.通过增加SampleInterval参数来获取一段时间的平均值,从而准确的了解这段时间内cpu的使用情况,但很容易理解的是加了这个参数会让脚本程序阻塞到这,它会等待这样一段时间后再返回结果,这样会降低并发影响我们的性能数据收集。

2.减小性能数据采集的时间间隔,尽量做到秒级,然后可以再通过求均值的尽量让数据能准确反映一段时间内的cpu使用情况,但数据收集的粒度到底有多细致还得看集群的大小和采集的方式。如果是通过pull,也就是存在中心节点定时到每个监控节点取数据,那么随着集群规模的增长,监控的粒度肯定会受影响,中心节点会成为瓶颈。而如果是通过push,每个监控节点都有相应的agent来做数据的收集,不存在中心节点,那么能够支撑的集群规模会大很多,监控粒度也能细致很多。

(以下数据的收集都是一样的问题,我就不复述了,具体到每个metrics肯能会存在不同的计算方式,这个可以参考微软官方详细说明)

% Privileged Time

命令:Get-Counter -Counter ‘Processor(_Total)% Privileged Time’

Get-Counter -Counter ‘Processor(_Total)% Privileged Time’ -SampleInterval X

解释:对应于处理器执行 Microsoft Windows 内核命令(例如处理 SQL Server I/O 请求)所用时间的百分比。,类似linux的sys。

公式:

% User Time

命令:Get-Counter -Counter ‘Processor(_Total)% User Time’

解释:cpu执行用户进程的时间百分比,类似linux的user。

计算方式同privileged time。

System Processor Queue Length

命令:Get-Counter -Counter ‘SystemProcessor Queue Length’

解释:处理队列的线程数,它使指需要处理的,而不是正在处理的。

SUM (N) / x

2.2. 存储相关

关于磁盘响应时间

Avg. Disk sec/Transfer

命令:Get-Counter -Counter ‘PhysicalDisk(_Total)Avg. Disk sec/Transfer’

解释:显示存储端处理每个IO请求的平均响应时间。

Avg. Disk sec/Read

命令:Get-Counter -Counter ‘PhysicalDisk(_Total)Avg. Disk sec/Read’

解释:显示存储端处理每个读IO的平均响应时间。

Avg. Disk sec/Write

命令:Get-Counter -Counter ‘PhysicalDisk(_Total)Avg. Disk sec/Write’

解释:显示存储端处理每个写IO的平均响应时间。

关于IOPS

Disk Transfers/sec

命令:Get-Counter -Counter ‘PhysicalDisk(_Total)Disk Transfers/sec’

解释:显示了磁盘上的IOPS总数,直观的显示了所对应LUN上的每秒IO的吞吐量。

Disk Reads/sec

命令:Get-Counter -Counter ‘PhysicalDisk(_Total)Disk Reads/sec’

解释:显示磁盘每秒的读IO数量。

Disk Writes/sec

命令:Get-Counter -Counter ‘PhysicalDisk(_Total)Disk Write/sec’

解释:显示磁盘每秒的写IO数量。

关于Throughput

Disk Bytes/sec

命令:Get-Counter -Counter ‘PhysicalDisk(_Total)Disk Bytes/sec’

解释:磁盘上总得数据传输量,包括读写。

Disk Read Bytes/sec

命令:Get-Counter -Counter ‘PhysicalDisk(_Total)Disk Read Bytes/sec’| format-table –auto

解释:磁盘上每秒读数据的传输量。

Disk Write Bytes/sec

命令:Get-Counter -Counter ‘PhysicalDisk(_Total)Disk Write Bytes/sec’| format-table –auto

解释:磁盘上每秒写数据的传输量。

2.3 内存相关

Pages/sec

命令:Get-Counter -Counter ‘MemoryPages/sec’

解释:每秒发生的硬错误页数,包括从磁盘读取的和写入磁盘释放工作空间的,类似linux的swap。

FreePhysicalMemory,TotalVisibleMemorySize

命令:Get-WmiObject -Query ‘Select * from Win32_OperatingSystem’ | Select FreePhysicalMemory,TotalVisibleMemorySize | Format-Table -AutoSize”

解释:获取空闲内存和总内存,可以用于计算内存使用率等。

2.4 网络相关

Bytes Total/sec

命令:Get-Counter –Counter ‘Network Interface(*)Bytes Total/sec’ | format-table –auto

解释:获取所有网卡的流量,并未求和只是分别获取。

Bytes Received/sec

命令:Get-Counter –Counter ‘Network Interface(*)Bytes Received/sec’ | format-table –auto

解释:获取所有网卡的流入量。

Bytes Sent/sec

命令:Get-Counter –Counter ‘Network Interface(*)Bytes Sent/sec’ | format-table –auto

解释:获取所有网卡的流出量。

Packets Received/sec

命令:Get-Counter -Counter ‘Network Interface(*)Packets Received/sec’ | format-table –auto

解释:获取所有网卡的收到的数据包的数量。

Packets Sent/sec

命令:Get-Counter -Counter ‘Network Interface(*)Packets Sent/sec’ | format-table –auto

解释:获取所有网卡的发送包得数量。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云ECS的Windows Server 2012 R2使用体验 MIS 21101马芊芹(Hygge)
我,马芊芹,是来自湖南常德的一名大二学生,就读于国际学院的信息管理与信息系统专业,教育部明确规定了信管专业的培养目标是“从事信息管理以及信息系统分析、设计、实施管理和评价等方面的高级专门人才”,该专业的人才在社会各级各类组织中有着广泛就业前景和良好的职业成长性。这就要求我们既懂管理又懂计算机,虽然最后会授予管理学学位,但我更想成为一名程序员,往计算机方面发展。 我就读于中外合办专业,目前正在学习三门编程语言和一门网络概论,教我们网络概论的加拿大外教交给了我一项个人作业的任务,就是申请一个阿里巴巴的云服务器,使用Windows Server 2012 R2操作系统,在云服务器上安装IIS,
15 0
【镜像更新】Windows Server 2019 数据中心版
信息摘要: Windows Server 2019 数据中心版镜像更新适用客户: 使用Windows Server的用户版本/规格功能: 镜像ID: win2019_64_dtc_1809_zh-cn_40G_alibase_20190318.
4806 0
Windows server2003配置ftp服务
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/45010139 前言:如果你已经非常清楚的掌握了Windows server 2003的安全机制,那么你可以通过开启Windows自带的ftp服务进行使用,不过很多情况下,这不安全,但是我会告诉你方法,这需要你的Windows安装目录下有对应的ftp安装包。
805 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
ECS运维指南之Windows系统诊断
立即下载
《云服务器运维之Windows篇》
立即下载
MongoDB在性能监控领域的应用
立即下载