1.在群里申请进行性能测试
2.搭建环境,开始测试
3.关闭服务,停掉所有相关进程
4.在群里通知大家环境可用
在压测机器 (2台)A B
杀掉RECOMMEND进程 ps -ef|grep recommend|awk '{print $2}'|xargs kill -9
其中一台搭建RS测试环境 提测branch分支和,main主线分支、RS的线上分支在branch流水线
注意 如果有词典更新,记得拉取dict。脚本很慢,大概需要16分钟。把词典拷贝到压测环境目录下
在压测机器搭建的2个环境rsbranch rsmain 起不同的端口 8603 8604
启动服务、测试服务是否启动成功、请求压测环境接口
压测工具uload:在发压机器也就是测试机器下载uload最新代码
2)修改conf/uload.conf
关键参数:
press_module : 1 ##post 请求设置为1
input_type : 14 ##post 请求设置为14
address : ip:port ## 发压地址(压测环境184机器的ipport),支持多个环境用逗号分割
input_file : ./test_file ##请求集地址
其他参数:
is_loop : 0 ##是否循环发送
press_size : 10 ##压力大小
press_number : 0 ##支持指定发送请求个数
press_time : 3600 ##支持控制发送时长(秒s 半小时或者1小时)
save_res : 1 ##是否保存后端返回的数据包
42 #压力使用的输入源
43 input_file : /home/work/xx/uload_all_file_old
先查看端口进程 user -avn tcp 8603
USER PID ACCESS COMMAND
8603/tcp work 16797 f.... recommend
开2个窗口在/home/xx/xx 分别执行
sh lookatUPID.sh -p 16797 -d 1 > responsebranch &
sh lookatUPID.sh -p 12627 -d 1 > responsemain &
执行完毕查看下lookatUPID进程 ps -ef|grep lookatUPID.sh
取线上3w用户的uid,让RD灌入redis,压测每个类型请求量在3w
实际操作:执行 python send_to_rs_all.py uid0824 23 ip:8503 请求传参类型为23的
跑完之后在 /home/work//res下生成req_file 和 res_file
每生成一个type类型的请求与返回后到 /home/work/xx/res 拷贝下文件重命名,以(类型+流量id)的格式把请求日志分别保存下来,否则会覆盖
最后整理到一个日志文件 作为发压请求
cat req_file_* > all_file_old
3)准备发压
1. 记得在此之前压测配置文件地址一定修改正确!!!
2.在184机器任意目录输入ulimit -c unlimited
3.记得删除184抗压机器服务的日志
4.以上OK之后在发压机器158机器 ./bin/uload &
启动服务,这样就可以在压测机器发压了
如果有问题,先停止uload进程
ps -ef|grep uload|grep -v grep|awk '{print $2}'|xargs kill -9
再杀掉lookatUPID.sh的进程
压测过程查看进程,登录184压测机器,查看会产生大量的进程。关注core日志
耗时统计脚本:根据耗时的flag统计耗时:statistics_rac_tag.py。
执行方式:拷贝脚本statistics_rac_tag.py到日志路径下面,执行:python statistics_rac_tag.py ./ $flag_t,可以统计所有日志的平均耗时的结果all_t,self_t等。生成的耗时结果文件放在log_statistics.all文件中。根据rec_type,dumisid统计耗时:rs_log_stat.sh。
执行方式:拷贝脚本rs_log_stat.sh到日志路径下面,执行:sh rs_log_stat.sh $log_path(required) $rec_type(required) $dumisid(optional)。
生成的结果:每个rec_type+dumisid为维度生成一个统计耗时文件,该文件以rec_type_$dumisid为前缀,拼上log_statistics.all。例如,sh rs_log_stat.sh ./ 20 50001,生成的rec_type=20的耗时结果文件是COMMON_GENERAL_50001_log_statistics.all。【每个rec_type对应日志中的一种类型,可以看下notice日志,例如,rec_type=20的请求,在notice日志中打的标记是COMMON_GENERAL】
这个脚本只支持已有的rec_type的统计,新增的不支持,需要自己添加
当前目录 统计all_t字段
把 recommend.log.notice.* 有耗时的日志写到test.log日志文件
因为代码里是打开test.log
cat recommend.log.notice*>test.log
把 recommend.log.notice.* 有耗时的日志写到rac.log日志文件
在主干分支 执行完后在生成log_statistics.all 这个文件不会被删除 会统计all_t的耗时 再执行self_t的时候再把self_t的耗时写进去到一个文件
注意修改rs_log_stat.sh文件,注意新增类型要增加配置,以及每个类型下每次插件可能变化,注意拿原始的recommend.log.notice.*到全部的总文件对比分析各耗时插件名称,及时补充修改rs_log_stat.sh文件。如果主干sh rs_log_stat.sh /home/xx/rsmain/output/log 13 506049报错,分析下temp日志,发现格式为all_t :144.05 self_t :9.894,实际正确的格式为all_t:210.94 self_t:10.435(正则是这样的)。用sed处理下sed 's/t :/t:/g' temp.log>temp.log.1
可能是正则有问题
tmp_compile = re.compile(" " + tag + ":[0-9]+")
tmp_compile = re.compile(" " + tag + ": *[0-9]+")
tmp_compile = re.compile(" " + tag + ": [0-9]+")
因为日志可能是 all_t:86.543 self_t:3.154
all_t: 86.543 self_t: 3.154
所以正则需要换下
压测步骤-uload
于 2024-04-24 15:41:34 首次发布