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

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

相关文章
|
关系型数据库 MySQL Linux
ADB MySQL湖仓版在Linux和Windows上的性能差异
ADB MySQL湖仓版在Linux和Windows上的性能差异
115 1
|
API Windows
PetitPotam——另一种方式触发Windows主机认证
PetitPotam——另一种方式触发Windows主机认证
|
网络协议 网络安全 虚拟化
解决虚拟机安装windows7无法与主机ping通的解决方案
解决虚拟机安装windows7无法与主机ping通的解决方案
1015 0
解决虚拟机安装windows7无法与主机ping通的解决方案
|
监控 前端开发 安全
CentOS7 部署 Zabbix 监控平台———监控网络设备,Linux 主机、Windows 主机
Zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级开源解决方案。
1306 0
CentOS7 部署 Zabbix 监控平台———监控网络设备,Linux 主机、Windows 主机
|
26天前
|
存储 负载均衡 Java
如何配置Windows主机MPIO多路径访问存储系统
Windows主机多路径(MPIO)是一种技术,用于在客户端计算机上配置多个路径到存储设备,以提高数据访问的可靠性和性能。本文以Windows2012 R2版本为例介绍如何在客户端主机和存储系统配置多路径访问。
70 13
如何配置Windows主机MPIO多路径访问存储系统
|
4月前
|
存储 安全 网络安全
【Azure 环境】使用Azure中的App Service部署Web应用,以Windows为主机系统是否可以启动防病毒,防恶意软件服务呢(Microsoft Antimalware)?
【Azure 环境】使用Azure中的App Service部署Web应用,以Windows为主机系统是否可以启动防病毒,防恶意软件服务呢(Microsoft Antimalware)?
|
4月前
|
网络协议 应用服务中间件 nginx
性能提升-如何设置Windows操作系统TIME_WAIT状态的TCP连接快速回收时间?
性能提升-如何设置Windows操作系统TIME_WAIT状态的TCP连接快速回收时间?
123 0
|
6月前
|
网络安全 C++ Windows
【Windows驱动开发】(主机)VS2017+(虚拟机)win10系统------双机调试
【Windows驱动开发】(主机)VS2017+(虚拟机)win10系统------双机调试
|
7月前
|
数据库 Windows
第五十章 使用 ^SystemPerformance 监视性能 - Microsoft Windows 平台的 InterSystems IRIS 性能数据报告
第五十章 使用 ^SystemPerformance 监视性能 - Microsoft Windows 平台的 InterSystems IRIS 性能数据报告
45 0
|
7月前
|
弹性计算 Ubuntu Linux
2024年Windows/Linux搭建幻兽帕鲁主机教程(超详细图文)
幻兽帕鲁作为一款热门多人在线游戏,为了给玩家提供稳定、流畅的联机体验,阿里云提供了高效便捷的快速部署解决方案,本文将为大家介绍阿里云一键部署幻兽帕鲁联机服务器详细教程。
104 3