在公司做压力测试也挺长时间了,每次测试前环境数据准备都需要话费较长时间,所以一直在考虑能不能将整个过程实现自动化进行,于是就抽空写了一个自动化脚本,当然这个脚本目前功能十分简陋,代码也不完善,很有很多需要改的地方,后续再优化。文中如有错误或者不妥之处,还望指教。

一、设计思路

1、初始化数据库(导入用户,清除数据等)

2、初始化缓存(使用了redis缓存优化系统)

3、执行压力测试

二、目录结构

aaarticlea/png;base64,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" alt="" />

目录解读:

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` #####################
####数据库初始化
#####################
function init_data(){
echo "===========开始初始化相关数据============="
mysql -h${host} --default-character-set=utf8 -u${username} -p${password} ${dbname} -e"
DELETE FROM t_user WHERE id > ;
DELETE FROM t_person WHERE id > ;
SELECT count(*) AS '压测前预约总数' FROM t_test_table;
" cd ${sql_path}
sql_name=`ls`
for file_name in ${sql_name[@]}
do
if [ -f "$file_name" ];then
#command="source $file_name"
mysql -h${host} --default-character-set=utf8 -u${username} -p${password} ${dbname} -e "source ${file_name}"
else
echo -e "\033[31;31m SQL文件不存在!!!\033[0m"
fi
done
cd .. mysql -h${host} --default-character-set=utf8 -u${username} -p${password} ${dbname} -e"
SELECT count(*) AS '新增用户数' FROM t_user WHERE id > ;
"
echo "==========已完成初始化相关数据============"
}
#####################
####缓存初始化
#####################
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============已完成初始化缓存=============="
}
#####################
####执行jmeter脚本
#####################
function auto_jmeter(){
sh ${jmeter_path} -n -t ${jmx_path} -l ${jtl_path}
}
#####################
####查询数据(数据太多无作用,因为缓存到数据库需要很长时间)
#####################
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
select_data

四、执行结果如下图

aaarticlea/png;base64,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" alt="" />

五、遗留的问题

1、jmeter压力上不去,尽管加了1000个线程,但实际并发20左右,这个在之前发的文档里面有数据呈现。

2、支持输出html报告,需要实现,压测报告更加直观。如何输出正确的测试报告非常重要。

等等

上述问题解决会继续更新

【注】欢迎探讨,欢迎转载,但转载请注明出处。

【原】shell编写一个简单的jmeter自动化压测脚本的更多相关文章

  1. [shell编程]一个简单的脚本

    首先,为什么要学习shell呢?哈哈,当然不是shell能够怎样怎样然后100字. 最近看到一篇博文<开阔自己的视野,勇敢的接触新知识>,读完反思良久.常常感慨自己所会不多,对新知识又有畏 ...

  2. 手把手教你编写一个简单的PHP模块形态的后门

    看到Freebuf 小编发表的用这个隐藏于PHP模块中的rootkit,就能持久接管服务器文章,很感兴趣,苦无作者没留下PoC,自己研究一番,有了此文 0×00. 引言 PHP是一个非常流行的web ...

  3. 编写一个简单的内核驱动模块时报错 “/lib/modules/3.13.0-32-generic/bulid: 没有那个文件或目录。 停止。”

    编写一个简单的内核驱动模块 static int hello_init() { printk(“hello,I am in kernel now\n”); ; } void addfunc(int a ...

  4. 编写一个简单的C++程序

    编写一个简单的C++程序 每个C++程序都包含一个或多个函数(function),其中一个必须命名为main.操作系统通过调用main来运行C++程序.下面是一个非常简单的main函数,它什么也不干, ...

  5. 使用Java编写一个简单的Web的监控系统cpu利用率,cpu温度,总内存大小

    原文:http://www.jb51.net/article/75002.htm 这篇文章主要介绍了使用Java编写一个简单的Web的监控系统的例子,并且将重要信息转为XML通过网页前端显示,非常之实 ...

  6. 编写一个简单的Web Server

    编写一个简单的Web Server其实是轻而易举的.如果我们只是想托管一些HTML页面,我们可以这么实现: 在VS2013中创建一个C# 控制台程序 编写一个字符串扩展方法类,主要用于在URL中截取文 ...

  7. javascript编写一个简单的编译器(理解抽象语法树AST)

    javascript编写一个简单的编译器(理解抽象语法树AST) 编译器 是一种接收一段代码,然后把它转成一些其他一种机制.我们现在来做一个在一张纸上画出一条线,那么我们画出一条线需要定义的条件如下: ...

  8. Java入门篇(一)——如何编写一个简单的Java程序

    最近准备花费很长一段时间写一些关于Java的从入门到进阶再到项目开发的教程,希望对初学Java的朋友们有所帮助,更快的融入Java的学习之中. 主要内容包括JavaSE.JavaEE的基础知识以及如何 ...

  9. 用 Go 编写一个简单的 WebSocket 推送服务

    用 Go 编写一个简单的 WebSocket 推送服务 本文中代码可以在 github.com/alfred-zhong/wserver 获取. 背景 最近拿到需求要在网页上展示报警信息.以往报警信息 ...

随机推荐

  1. C++初始化,之不明白篇 cout<<x<<endl 与 cout<<"x = "<<cout<<x<<endl的输出的值会不一样

    代码如下 #include <iostream> using namespace std; class point { public :     int x;     int y;     ...

  2. 一条命令深度清理你的mac

    一条命令深度清理你的mac mac 用了一段时间后很快发现硬盘空间不够了,就想找一些磁盘清理的工具,但是发现居然都是收费的. 就手工操作吧.方法其实非常简单. 就一条命令, cd / du -hd 5 ...

  3. Kotlin 在kotlin内使用Java的一些注意(长篇)

    首先呢,大部分的java在kotlin内是可以使用的. 但是有些java的关键字和kotlin的一样,而意义不一样就需要转义.(单引号括起来的)这一点需要注意. 这是一个长篇 我会不断更新.毕竟我也在 ...

  4. UIImageView 动画

    1.UIImageView 动画 1.1 播放图片集 @property (nonatomic, strong) UIImageView *playImageView; self.playImageV ...

  5. NSArray 数组

    前言 数组只能存储 OC 对象,不能存储 C 语言中的基本数据类型,也不能存储 nil . Xcode 7 对系统中常用的一系列容器类型都增加了泛型支持(),有了泛型后就可以指定容器类中对象的类型了. ...

  6. 洛谷P4494 [HAOI2018]反色游戏(tarjan)

    题面 传送门 题解 我们先来考虑一个联通块,这些关系显然可以写成一个异或方程组的形式,形如\(\oplus_{e\in edge_u}x_e=col_u\) 如果这个联通块的黑色点个数为奇数,那么显然 ...

  7. 开启和查看mysql的bin-log日志

    [root@VM_0_7_centos data]# vim /etc/my.cnf [root@VM_0_7_centos data]# vim /etc/my.cnf [root@VM_0_7_c ...

  8. uC/OS-II 一些函数简介

    获得更多资料欢迎进入我的网站或者 csdn或者博客园 以前搞硬件的经验,最近突然翻出来了.分享给大家:主要讲解uC/OS-II常用函数:虽说现在转行软件了,但是感觉之前搞硬件的经验还真是很有用对于理解 ...

  9. [jvm] JVM体系结构

    一.jvm 运行时数据区域 程序计数器 java虚拟机栈 本地方法栈 java堆 方法区 运行时常量池 直接内存(非JVM区域) 二.深入探讨HotSpot虚拟机在Java堆中对象分配.布局和访问的全 ...

  10. linux vmalloc和kmalloc

    kmalloc是内核低端内存的分配,而vmalloc对应内核高端内存的分配.kmalloc()分配的内存处于3GB-high_memory之间,这一段内核空间与物理内存的映射. kmalloc保证分配 ...