如何监测windows服务器的性能?

如何监测windows服务器的性能?,第1张

Windows服务器中自带的性能监控工具叫做Performance Monitor;

在开始-运行中输入‘perfmon’,然后回车即可运行。

Monitor本身也是一个进程,运行起来也要占用一定的系统资源。所以你看到的资源的使用量应该比实际的要稍微高一点。这个工具在帮助管理员判断系统性能瓶颈时非常有用;

举个列子来说,今天有个用户抱怨说他们项目组的服务器(这是一台虚拟机)运行起来非常慢,但也不知道具体问题出在什么地方。任务管理器里显示CPU和内存的使用量都不算高,但服务器的相应就是非常慢;

Monitor,让其运行一段时间后(因为参考平均值会比较准确),发现average disk queue的值比较高,这就说明物理服务器的硬盘负荷太重,I/O操作的速度跟不上系统的要求。关掉虚拟机,将其转移到另一台硬盘负载比较小的主机上,再打开虚拟机。

分析性能情况

1、内存泄露判断

虚拟内存字节数(VirtualBytes)应该远大于工作集字节数(Workingset),如果两者变化规律相反,比如说工作集增长较快,虚拟内存增长较少,则可能说明出现了内存泄露的情况。

对于Workingset、Private Bytes、Available bytes这些计数器,如果在测试期间内数值持续增长,而且测试停止后位置在高水平,则也说明存在内存泄露。

Windows资源监控中,如果Process\PrivateBytes计数器和Process\WorkingSet计数器的值在长时间内持续升高,同时Memory\Available

bytes计数器的值持续降低,则很可能存在内存泄漏。

2、CPU使用情况

一般平均不要超过70%,最大不要超过90%(好:70% 、坏:85%、 很差:90%)。

3、tps(每秒处理事务的数量,在SOAPUI中进行统计)

一般在10-100,不同应用程序具体值不同。

服务器的性能新能判定可以考虑从以下几点来看看:

        1、服务器的处理器,包括CPU型号和核心数

             服务器的处理器决定服务器的运算速度,因此,对于服务器选取应该根据具体的业务场景来选取,处理运算能力越强的服务器对应的价格也是越来越贵。选取时候可以根据业务实际环境需求,先选择能差不多满足的就好,后续有需求在升级配置就可,现在服务器中弹性云服务器就非常针对性满足这类需求。

        2、服务器的内存

              服务器内存大小决定着多负载多任务的处理能力,可以适当结合实际情况选取

        3、服务器的宽带

               宽带大小影响这站点内容的下载速度与在考虑储存分离时候将样式文件、、css等放在对象存储服务 OBS中的时候可以适当降低在服务器的宽带大小

考虑到业务成长性,可以考虑直接以服务器+对象储存服务+云数据库+CDN模式,增强业务容灾能力和用户体验

使用LR对数据库进行性能测试,实际上有多种办法,包括通过现有的数据库协议进行CS模式的先录制后执行的模式,以及通过socket方式向服务器发包方式的测试方式。这些是常规书籍上介绍的比较简单上手的测试方法,但是不具备通用性,受已有协议或socket编程方式的限制,所以需要更为通用的测试方法。

用Java user的协议进行所有数据库性能的测试工作:

Java user 不需要录制,把所有的操作通过java语言进行实现,通过lr调用java的class进行加压批量操作,这样可以不关心被测系统是哪个数据库,只要能够通过jdbc进行访问,就能实现性能测试。

一、测试环境准备

1 被测服务器准备,根据测试目的,搭建需要的数据库服务器,确保数据库能够正常访问,正常操作;

2 Java代码的准备,无论使用哪种IDE,只要能够编写访问数据库的class就可以,形式可以是j2se,也可以是j2ee,因为在操作时只使用class的部分方法,所以j2ee就可以了;

3 LR的脚本调试,把java的class导入到脚本调试模式,根据需要添加事务以及其他操作。

二、编写数据库访问

1 使用myeclipse,创建web project,创建如下图的包目录:

Java文件中包含各种访问数据库的方法。

需要注意的是,class中的方法必须是public static,否则LR中无法调用。由于创建的是j2ee程序,所以不用main函数,在web中就可以进行功能验证。

确认class中的方法编写完成,创建一个webjsp文件,如下:

导入class

声明类,并实例化,直接调用刚才编写的3个方法,因为这3个方法是直接对数据库进行操作,不需要实参,也没有返回值,所以直接实现即可。

此时启动web服务,在浏览器中输入jsp的地址,直接刷新页面,就可以调用这3个方法,如果正确,就会对相应的表进行操作,如果不正确,则需要修改相应的代码。

2 LR脚本准备:

LR脚本实际上就是对访问代码的调用,关键在于需要根据测试场景划分不同的脚本布局。

例如:在myEclipse里,我们只编写了一个class,其中包含三个方法,如果在执行性能测试时,这三个方法相互独立,互不干涉,则最简单的划分方法是,创建三个java user,每个java user中包含一个方法,做三份脚本,场景执行时分别进行调用。如果三个方法之间有相互关系,则需要根据实际情况,把有关联的方法放在一起,具体情况可按实际灵活分配。

因为已经将class文件进行编译发布了,所以可以在“java2postgres\WebRoot\WEB-INF\classes\com\lr\test”目录中找到对应的class文件,

复制这个文件,找到LR的目录:HP\LoadRunner\classes\com\lr\test\ 如果没有文件夹,按相同的内容创建。

在LR脚本中进行引包操作:

将需要执行的java类以及方法,放在action中,可根据实际测试情况和所需要验证的内容,具体调试代码。

在这里可以像编写普通LR脚本一样,添加事务或集合点等内容。

由于是通过JDBC对数据库进行访问,因此要在java user中加载jdbc驱动。

运行时设置中,增加jdbc驱动,需要注意的是java user使用的本地jdk,需要至多16版本,若使用17版本,回放会有错误,这是jdk版本的问题。

操作完成之后,按F5或点击运行,进行脚本回放,实际此时也对数据库进行了操作,可以直接查询对应的表,检查功能是否正确。

三、执行性能测试

已经有了java user的脚本,和普通web性能测试一样,设计场景、执行测试、收集报告、分析性能瓶颈即可。

由于项目中需要用到dpdk,当时在服务器平台选型上有如下2种不同配置可供选择,为了理解老的Xeon处理器和Xeon金牌处理器对DPDK转发性能的影响,需要在两台服务器上分别进行DPDK l3fwd性能转发测试。

采用如下拓扑进行测试,测试仪的4个10GE端口连接X710-DA4的4个接口,测试时测试仪的4个端口同时打流,经过服务器DPDK转发后分别从X710-DA4网卡的不同接口送出,在测试仪的4个端口查看是否有丢包。在无丢包的情况下测试仪端口打流的最大速率即为服务器端DPDK能够提供的最大转发能力,以MPPS为单位。

(1) 在服务器上运行dpdk

/examples/l3fwd/x86_64-native-linux-gcc/l3fwd -l 4,6,8,10 -n 4 -w 0000:04:000 -w 0000:04:001 -w 0000:04:002 -w 0000:04:003 -- -p 0xf --config="(0,0,2),(1,0,4),(2,0,6),(3,0,8)"

运行l3fwd前有一些准备工作:

上述是DPDK官方的性能测试报告中建议的BIOS配置,在实际测试用我没有修改CPU C-state和P-state,并关闭了超线程的功能。

也可以通过 cat /sys/class/net/p6p1/device/numa_node 查看

在上述操作完成后便可以知道dpdk运行时应该设置参数。

(2)测试仪打流

在l3fwd运行起来后,会添加1921800/24、1921810/24、1921820/24、1921830/24四个网段的路由,因此在测试仪端4个端口设置流的时候需要将流的目的IP地址分别设置为上述4个网段的地址,流的目的MAC地址设置为对应接口的MAC地址。

上述的DUT2对应Server01,DUT3对应Server02,DUT1的性能数据和配置是从DPDK的性能测试报告中拿到的。DUT1、DUT2和DUT3的配置对比如下。

从测试结果可以看出,DUT3上运行DPDK就能够实现64字节数据包的线速转发。对比DUT2和DUT3的转发性能可以看出,基于 Xeon Gold 5118处理器的平台相比老的Xeon处理器平台,转发性能是有一定提升的。

当然,从我个人的理解来看,现在的转发测试只是测4条路由表的情况,路由表均能够存放到处理器的一级cache中,没有大规模内存访问的压力。如果有大规模的路由表或者服务器上多个网卡同时收发数据,并且涉及到跨网卡之间的数据包转发,当前的服务器能否实现性能的线性扩展还需要后面进一步测试。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何监测windows服务器的性能?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情