服务器压力测试工具2——压力端控制模块设计

简介

压力端控制模块(Robotctr)相对简单,主要负责控制压力端的压力生成以及部分测试数据的上传。

设计思路

Robotctr读取配置文件,把相应的配置项通过HTTP发送到各个Robotsrv,并使用HTTP请求控制Robotsrv机器的启动和停止测试。请求包括:
1.start请求:开始测试请求,会向配置文件压力服务器列表中的所有Robotsrv发送start请求。如果某个Robotsrv启动失败则会退出测试。
2.stop请求:停止测试请求,向配置文件压力服务器列表中的所有Robotsrv发送stop请求。通过捕获信号来判断是否发送stop请求,当用户需要手动停止测试时,使用ctrl+c则可向所有Robotsrv发送stop请求。
3.status请求:获取测试数据状态请求。向配置文件压力服务器列表中的所有Robotsrv每隔Interval时间(配置文件中设置的数据采集间隔时间)发送status请求。并对各个Robotsrv回包中的数据进行计算汇总并上传至数据库。判断当前测试的成功率是否符合要求,如果低于要求的成功率,则立即退出测试,测试失败。

配置文件设计

压力端的配置文件使用的是json,主要内容包括

{
  "RobotNum":10, //每台Robotsrv开启的机器人数量。
  "RobotScene":"GameCase",//测试场景,用户自己编写,后面会详细介绍。
  "TPS":-1,//TPS控制数值,这个数值用来控制测试时被测服务器的TPS,-1表示进行极限测试。
  "TestTime":600,//测试时间,单位秒。
  "Interval":2,//数据上传时间间隔,单位秒。
  "RobotPerSec":100,//每秒启动机器人数。
  "SectionNum":100,//Tps控制时,任务分块数,推荐值100。后面会详细介绍。
  "StatTimeMax":1000,//预估最大的响应时间,单位毫秒。后面会详细介绍。
  "StatTimePrecision":2,//90%响应时间计算精度,单位毫秒,精度少量影响性能,推荐2毫秒。后面会详细介绍。
  "SuccessRate":99.9,//成功率,当测试中响应成功率低于该值将会自动退出测试且测试失败。
  "TestAddr":["ws://192.168.0.1:8888"],//被测服务器地址列表,为数组,可设置为多台。
  "CliLogPath":"../Clilog/%d/testlog_%h.log",//控制端日志路径。
  "SrvLogPath":"../Srvlog/%d/testlog_%h.log",//压力服务器日志路径。
  "DataLogPath":"../Datalog//%d/testlog_%h.log",//机器人测试数据日志路径。
  "ReadTimeOut":6,//测试超时时间,单位秒。
  "URLs": ["http://127.0.0.1:8080"],//压力服务器地址列表。
  "DBConfPath": "../../config/db.ini"//数据库配置文件路径。
}

你可能感兴趣的:(压力测试)