vlambda博客
学习文章列表

冲着效果显著的性能测试监控方法,收了!

摘 要

  

随着网络金融的不断壮大,金融服务向各领域纵深发展,金融网络系统的多样性和系统服务所面临的高并发性是前所未有的,尤其在电子商务领域,消费模式和消费行为的改变,服务的快捷、方便、多样,让人们生活模式由传统的线下转变为线上。为应对数字化服务需求的激增,各传统金融公司均在系统架构上进行了一系列的调整以缓解金融服务领域所使用服务的压力,并且提升系统效率与性能。服务的部署模式由单一部署架构向分布式集群部署架构方向发展,主机及大型后台服务陆续向开放平台进行下移;因此,开放平台服务器集群正在迅速壮大,性能测试过程中的指标监控也由单一服务器向集群服务器转变,测试人员的工作内容也面临着单机监控到多机监控的变化。本文在充分调研zabbix与monit等几款主流开源性能监控工具的前提下,结合测试人员在资源使用与系统权限中的实际情况,总结出一套可应用于分布式集群服务器性能指标监控的方法,该方法主要包括监控数据定时生成、监控数据上传与存储和监控数据下载与分析三部分,本文所提出的性能测试监控方法已经在实际测试工作中得到使用,效果显著。


1、引言


  性能测试是测试工作中的重要一环,而性能测试的指标监控又是一个重要内容,在我们使用的各种性能测试工具中,对服务器指标的监控方法也各不相同。过去在开放平台性能测试过程中,我们对服务器指标的监控采用人工登录服务器收集指标的方式,传统服务模式下测试人员所面临的是单机监控,我们在人员配备上还可以应对。随着数字化时代的推进,电子化服务已然成为一种常态,越来越多的人开始使用电子终端设备来处理生活中各种各样的事务,金融服务领域也开始以电子服务为主。为了适应时代的改变,应对业务的增长,实现效率的提升,系统架构做出了一系列的调整,服务器部署由单一架构向分布式集群架构转变;目前一个应用系统不再使用单机服务,而是多机集群服务,对测试人员来说多机集群监控时采用传统的单机逐一查询方式需要耗费巨大的工作量。为节省测试人员工作量、提升工作效率,需要对开放平台集群的性能指标监控方法进行相关研究。
  本文通过对主流性能监控工具的共性分析,结合多年的性能测试实践,总结出一套基于Perfmon的分布式集群服务器性能指标监控方法。结合性能测试工作需求和前期调研结果,本文所设计的监控套件包括监控数据定时生成、数据上传和存储、数据下载和分析三部分,该方法目前已被应用到实际的测试过程中,并且取得了显著的效果。

2、指标监控的设计与实现


    2.1 指标监控总体设计
  指标监控方法的设计从性能指标数据流转的方面考虑可划分为3个模块:性能数据定时生成、性能数据上传与存储、性能数据下载及分析。监控方案的总体设计如图1所示:
冲着效果显著的性能测试监控方法,收了!
   图1开放平台集群系统指标监控方法设计方案
   2.2 性能数据定时生成
  通过对性能测试工作需求的分析和前期的调研,我们总结出以下几种需要进行监控与分析的性能指标,包括:CPU利用率、剩余可用物理内存、等待托管锁的线程数、队列中等待服务的请求数、应用程序垃圾回收情况、网络适配器接受发送字节数和磁盘驱动在读写服务中所消耗时间情况等。在服务器性能数据的生成方面,我们优先考虑使用现有技术手段。本文采用Windows系统自带的系统性能监控工具Perfmon,Perfmon提供了比较全面的系统性能指标,这些指标完全覆盖了上文所提及的测试人员需重点关注的方面;同时Perfmon可以根据不同的性能管理要求定制日志内容;并且该工具具备定时启动的功能。Perfmon性能数据定时生成具体操作分为两步:
  1、如图2所示启动某一服务器上的系统性能监控工具Perfmon,使用该工具进行监控指标选择与定时监控计划设置,如图3、图4所示。我们选择了包括CPU利用率、剩余可用物理内存、等待托管锁的线程数等在内的共计15个指标;本文所设计的定时监控计划为每日13时启动Perfmon,监控计划持续时间为23小时59分钟,每15秒记录一次系统性能数据,同时每隔1小时生成一个监控日志文件并存放到指定路径下。
冲着效果显著的性能测试监控方法,收了!
   图2系统性能监控工具Perfmon
冲着效果显著的性能测试监控方法,收了!
   图3  Perfmon性能指标与定时监控计划的设置
  2、将上述测试计划文件以.XML的形式导出,启动开放平台集群中的所有服务器上的Perfmon监控工具,将测试计划以.XML的文件导入,如图4所示。
  3、开放平台集群中的服务器启动Perfmon后,每隔一小时会在指定路径生成一个监控日志文件,每天共生成24个.CSV格式的文件,文件以图5所示形式存放,图6展示了.CSV格式文件的详情,该文件中保存了1小时内系统的性能指标情况。


冲着效果显著的性能测试监控方法,收了!
   图4  Perfmon监控计划导入
冲着效果显著的性能测试监控方法,收了!
   图5Perfmon生成的监控日志文件
冲着效果显著的性能测试监控方法,收了!
   图6Perfmon生成的监控日志文件内容
   2.3 性能数据上传与存储
  由于开放平台集群中有多台服务器,我们在使用Perfmon生成系统性能监控日志后,需要将其从不同的服务器上传至一台数据库服务器,为之后性能数据的下载与分析提供方便。
  Perfmon系统性能监控工具在指定路径下所保存的.CSV格式的性能数据需要经过解析后上传至数据库,将全部服务器的性能数据保存到数据库表中,这样有利于性能数据分析时的数据的提取。经过综合考虑,本文对监控日志文件的上传采用Windows Powershell编写脚本的方法进行实现。
  性能数据上传与存储的实现步骤如下所示:
  1、选择一台数据库服务器,同时在该数据库中创建一个新的数据库表,数据库表结构如表1所示。
冲着效果显著的性能测试监控方法,收了!
表1 数据库表结构
  2、利用Windows Powershell编写的脚本将开放平台集群中全部服务器的性能数据导入到数据库表中,利用脚本将监控数据拼接成SQL语句插入到数据库中,由于存在多个服务器,所以需要添加服务器IP(SERVERIP)对性能数据加以区分。脚本伪代码如下所示:

提取当前时间

拼接.csv文件路径

拼接链接数据库的命令所使用字符串

连接并打开数据库

#遍历CSV

for (){

    $r=$data.GetValue($i)

将该行各列的值复制给变量$v0~$v15

判断变量$v0~$v15是否存在,若不存在赋值为0

#进行数据库插入命令的拼接

    $exec=$comm.ExecuteNonQuery()

    $i++

}

#数据库链接关闭

  3、为降低脚本执行时对服务器性能的影响,在监控计划设置时,我们将监控日志文件的更新设置为1小时;经测试shell脚本完成1个日志文件的上传时间为1秒,经过对性能指标的分析,文件上传期间的操作并未对服务器的监控指标造成显著影响。
   2.4 性能数据下载与分析
  经过性能数据定时生成和性能数据上传与存储两个步骤后,开放平台集群中全部服务器的性能指标已被保存到数据库中;此时,测试人员如果要在监控主机上进行性能数据的分析就需要将服务器的性能指标从数据库中下载至监控主机,并根据需求对原始数据进行处理,在本文所设计的监控方案中利用C#程序完成了数据下载与分析,最终测试人员只需要提供一个时间范围,就可以根据起止时间将数据库表中对应的数据下载保存到Excel表中,并计算各服务器性能指标的平均值和峰值供测试人员分析。
  性能数据下载与分析模块通过自主编写的C#程序进行实现,C#程序的流程图如图7所示,程序的具体流程包括:
  1、首先由测试人员通过如图8所示窗口输入起止时间;
  2、当时间范围输入合理后链接数据库服务器,进行性能数据拷贝,此过程会将该时间范围内全部服务器的性能数据拷贝下来,以服务器IP作为区分存放到不同的工作簿中;
冲着效果显著的性能测试监控方法,收了!
    图7  性能数据下载与分析程序流程图
冲着效果显著的性能测试监控方法,收了!
   图8  测试人员输入起止时间
  3、随后逐个服务器进行数据统计与分析,计算各性能指标在该时间段内的平均值与峰值,将统计结果写入汇总分析工作簿,如图9所示。测试人员最终可以在指定路径下得到一个Excel文件,测试人员不仅可以利用该Excel表进行性能数据读取,也可以针对某一服务器进行绘图分析,得到该服务器在某一时间段内的性能指标曲线图如图10所示。


冲着效果显著的性能测试监控方法,收了!
   图9  C#生成的Excel文件
冲着效果显著的性能测试监控方法,收了!
   图10  性能指标曲线图


3、总结与展望

   3.1 总结
  测试人员在某项目的性能测试中使用了本文的监控方法对开放平台服务集群进行了监控,该开放平台集群共包含24台服务器,使用本文方法监控服务器可以使得测试人员在一轮性能测试中将服务器指标采集时间由2-3小时左右减少到半小时以内,从而消除了人工采集数据的工作量,极大地提高了测试效率。通过使用本文所设计的性能监控方法可以为测试人员节省大量的时间与精力,另其将工作重心放到性能指标分析与调优上去,从而有效的提升了测试部门的测试质量。
  通过实际项目的验证,该性能监控方案具备了部署简单,使用简便的特点;试用结果表明该方案的实施确实降低了服务器性能指标采集过程中所消耗的人力。
   3.2 展望
  界面优化,目前监控结果分析下载界面仅能选择开始时间与结束时间,后续将加入选择服务器IP的功能,供测试人员选取要监控的服务器,同时考虑增加服务器主要监控指标的绘图功能,帮助测试人员分析测试过程中可能存在的性能异常。
  数据清理,目前集群性能监控方法生成的监控结果文件和数据库表数据均未做清理功能,后续考虑在上传功能和分析功能中加入历史数据清理功能,测试人员可以一键清除监控历史数据,避免因磁盘空间被占满导致测试环境异常。



冲着效果显著的性能测试监控方法,收了!


冲着效果显著的性能测试监控方法,收了!

推荐阅读

点击阅读☞

点击阅读☞

点击阅读☞

点击阅读☞

点击阅读☞

“阅读原文”一起来充电吧!