shell编写一个简单的jmeter自动化压测脚本
在公司做压力测试也挺长时间了,每次测试前环境数据准备都需要话费较长时间,所以一直在考虑能不能将整个过程实现自动化进行,于是就抽空写了一个自动化脚本,当然这个脚本目前功能十分简陋,代码也不完善,很有很多需要改的地方,后续再优化。文中如有错误或者不妥之处,还望指教。
一、设计思路
1、初始化数据库(导入用户,清除数据等)
2、初始化缓存(使用了redis缓存优化系统)
3、执行压力测试
二、目录结构
目录解读:
apache-jmeter-3.0 为jmeter程序目录
asserts.log 断言日志
auto_jmeter.sh 脚本文件(启动这个项目就是执行它)
jmeter.log jmeter启动日志
三、代码如下(按照惯例,所有涉及公司的代码都有修改)
#!/bin/bash
set -e
LC_ALL=C
LANG=C
unset TZ
file_path="./"
host="192.168.0.32"
username="test"
password="test.123"
dbname="test"
jmeter_path="./apache-jmeter-3.0/bin/jmeter.sh"
jmx_path="./apache-jmeter-3.0/jmxs/termplan_dq.jmx"
jtl_path="./apache-jmeter-3.0/jtls/`date +%Y%m%d-%H%M`.jtl"
sql_path="./sqlFiles/"
#now=`date +date +%Y%m%d-%H%M`###############33######
####数据库初始化
###############33######
function init_data(){echo "===========开始初始化相关数据============="mysql -h${host} --default-character-set=utf8 -u${username} -p${password} ${dbname} -e"DELETE FROM t_user WHERE id > 50000;DELETE FROM t_person WHERE id > 50000;SELECT count(*) AS '压测前预约总数' FROM t_test_table;"cd ${sql_path}sql_name=`ls`for file_name in ${sql_name[@]}doif [ -f "$file_name" ];then#command="source $file_name"mysql -h${host} --default-character-set=utf8 -u${username} -p${password} ${dbname} -e "source ${file_name}"elseecho -e "\033[31;31m SQL文件不存在!!!\033[0m"fidonecd ..mysql -h${host} --default-character-set=utf8 -u${username} -p${password} ${dbname} -e"SELECT count(*) AS '新增用户数' FROM t_user WHERE id > 50000;"echo "==========已完成初始化相关数据============"
}
###############33######
####缓存初始化
###############33######
function init_cache(){echo "=============开始初始化缓存==============="echo "==============初始化(kiwi)================"curl "http://127.0.0.1:10000/test/test.action"echo -e "\n==========初始化冻结缓存(kiwi)============"curl "http://127.0.0.1:10000/test/test/zen.action"echo -e "\n============已完成初始化缓存=============="
}
###############33######
####执行jmeter脚本
###############33######
function auto_jmeter(){sh ${jmeter_path} -n -t ${jmx_path} -l ${jtl_path}
}
###############33######
####查询数据(数据太多无作用,因为缓存到数据库需要很长时间)
###############33######
function select_data(){echo "============开始查询相关数据=============="mysql -h${host} --default-character-set=utf8 -u${username} -p${password} ${dbname} -e"select count(*) as '压测后预约总数' from t_test_table;quit"echo "============相关数据查询完毕=============="echo -e "\033[36;36m============压力测试执行完毕==============\033[0m"
}
#######################
#######################
init_data
init_cache
auto_jmeter
sleep 10
select_data
四、执行结果如下图
五、遗留的问题
1、jmeter压力上不去,尽管加了1000个线程,但实际并发20左右,这个在之前发的文档里面有数据呈现。
2、支持输出html报告,需要实现,压测报告更加直观。如何输出正确的测试报告非常重要。
等等
上述问题解决会继续更新
【注】欢迎探讨,欢迎转载,但转载请注明出处。(2017-06-30)
欢迎扫描关注我的公众号,欢迎投稿,一起探讨技术、人生,谢谢。
shell编写一个简单的jmeter自动化压测脚本相关推荐
- shell 压测_【原】shell编写一个简单的jmeter自动化压测脚本
在公司做压力测试也挺长时间了,每次测试前环境数据准备都需要话费较长时间,所以一直在考虑能不能将整个过程实现自动化进行,于是就抽空写了一个自动化脚本,当然这个脚本目前功能十分简陋,代码也不完善,很有很多 ...
- web版本 开源压测工具_开源了一个简单的http服务压测工具Alex,自带web ui,golang实现...
Alex是基于vegeta library和boom封装的压力测试web UI.Vegeta提供稳定的qps压力源,boom提供稳定的并发数压力源. github地址 https://github.c ...
- python脚本编写_如何用Python包编写一个简单的脚本,表达你对父母的爱?
全文共2800字,预计学习时长6分钟 在繁忙的工作生活中,我们经常忘记给所爱的人发WhatsApp.本教程将使用Python包Twilio编写一个简单的Python脚本来发送WhatsApp消息.我们 ...
- Linux环境使用命名空间编写一个简单的容器应用程序:namespace,container,cgroups
目录 使用命名空间编写一个简单的容器应用程序 创建一个子进程– fork vs clone 具有clone(2)的命名空间 简单示例 - CLONE_NEWPID 隔离网络接口 - CLONE_NEW ...
- linux系统写一个脚本,编写一个简单的linuxshell脚本
shell脚本和windows平台上的bat批处理是一样的,简化用户处理重复动作的操作,shell脚本由shell命令组成.下面是学习啦小编收集整理的编写一个简单的linuxshell脚本,希望对大家 ...
- linux实验三:基于mykernel 2.0编写一个简单的操作系统内核
实验内容 按照https://github.com/mengning/mykernel的说明配置mykernel 2.0,熟悉Linux内核的编译:基于mykernel 2.0编写一个操作系统内核,参 ...
- 编写一个最简单的.php,学习猿地- 说明 如果我们要编写一个简单的PHP脚本,需要学习哪些...
说明 如果我们要编写一个简单的 PHP 脚本,需要学习哪些基础知识呢? PHP 基础 PHP 脚本可放置于文档中的任何位置. 标准 的 PHP 脚本以 <?php 开头,以 ?> 结尾: ...
- java编写存钱_用Java编写一个简单的存款
package desposit.money; public class DespositMoney { public static void main(String[] args) { Custom ...
- 用java编写一个简单计算器
java 采用java编写一个简单计算器,使用awt和swing 代码如下: import java.awt.Color; import java.awt.Font; import java.awt. ...
最新文章
- laravel 是怎么做到运行 composer dump-autoload 不清空 classmap 映射关系的呢?
- innodb主键的长度为什么不能大于767字节
- exception is the version of xbean.jar correct
- 关于Servlet和异步Servlet
- HDU 2042:不容易系列之二
- 面向对象编程的两顶帽子
- 10.24 环境变量PATH,cp,mv,文档查看cat/more/less/head/tail
- 盛世zeepower远程距离隔空无线充投放商用 低频磁共振无线充电技术——充电有效距离 20-45mm
- (转载)高速ADC的关键指标:量化误差、offset/gain error、DNL、INL、ENOB、分辨率、RMS、SFDR、THD、SINAD、dBFS、TWO-TONE IMD...
- 统计学专业词汇英文翻译中英对照总结汇总(贾俊平 统计学 第七版 )
- php获取当前进程的id
- Ubuntu20.04(标题栏实时显示网速,cpu以及内存使用率)
- java裂变_微信现金红包单一红包、裂变红包(Java版)
- 『实践』VirtualBox 5.1.18+Centos 6.8+hadoop 2.7.3搭建hadoop完全分布式集群及基于HDFS的网盘实现...
- 显示器颜色校准_显示器校准:正确设置颜色的一般指南
- 通过全局钩子发送自定义消息,实现进程通信
- [数值计算-16]:最小二乘法的求解1 - 一元二次方程解析法求解
- 医学文献资料档案全文收集攻略
- 十进制转化为二进制代码及流程图
- 用java实现matlab的随机函数randsrc(m,n,[alphabet; prob])