服务器压力测试工具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"//数据库配置文件路径。
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
脚本使用简介: /******************************************************************************** void tcc_tell_user(long len,const char *fmt,...) void tcc_init_stochastic() int tcc_produce_stochastic(int a,int b) tcc_sscanf tcc_sprintf tcc_strcpy tcc_strcmp tcc_strstr tcc_strcat tcc_memcpy tcc_memcmp tcc_memset tcc_strlen tcc_malloc tcc_free *********************************************************************************/ void get_hex_string(unsigned char *in_dat,int in_len,char *ou_hex) { int i; char *t=(char*)tcc_malloc(8); ou_hex[0]=0; for(i=0;i<in_len;i++) { if(i%0x04==0 && i!=0) tcc_strcat(ou_hex," "); if(i%0x10==0 && i!=0) tcc_strcat(ou_hex,"\n"); tcc_sprintf(t,"X ",in_dat[i]); tcc_strcat(ou_hex,t); } tcc_free(t); } void msg_init() { // tcc_init_stochastic(); } void *msg_short_connect_form_data(long t,long s,long c,long *len) { char *data=(char*)tcc_malloc(128); *len=128; *(long*)(data+0x00)=128; *(long*)(data+0x04)=1; *(long*)(data+0x08)=0; *(long*)(data+0x0C)=0; int n=tcc_produce_stochastic(100,50000); tcc_sprintf(data+0x10,"hello%d",n); tcc_strcpy(data+0x20,"123456"); return data; } int msg_short_connect_recv_data(long s,long c,void *dat,long len) { unsigned char *ou_dat=(unsigned char*)tcc_malloc(5120); get_hex_string(dat,len,ou_dat); tcc_tell_user(5120,"s:%d c:%d len:%d\n%s\n\n",s,c,len,ou_dat); tcc_free(ou_dat); return 1; } void *msg_long_connect_form_data(long op,long s,long c,long *len) { char *data=(char*)tcc_malloc(128); *len=128; *(long*)(data+0x00)=128; *(long*)(data+0x04)=1; *(long*)(data+0x08)=0; *(long*)(data+0x0C)=0; int n=tcc_produce_stochastic(100,50000); tcc_sprintf(data+0x10,"hello%d",n); tcc_strcpy(data+0x20,"123456"); return data; } int msg_long_connect_recv_data(long s,long c,void *dat,long len) { unsigned char *ou_dat=(unsigned char*)tcc_malloc(5120); get_hex_string(dat,len,ou_dat); tcc_tell_user(5120,"s:%d c:%d len:%d\n%s\n\n",s,c,len,ou_dat); tcc_free(ou_dat); return 1; } void msg_free_data(void *arg) { tcc_free(arg); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值