shell 压测_【原】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[@]}
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 > 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报告,需要实现,压测报告更加直观。如何输出正确的测试报告非常重要。
等等
上述问题解决会继续更新
【注】欢迎探讨,欢迎转载,但转载请注明出处。
时间: 06-28
shell 压测_【原】shell编写一个简单的jmeter自动化压测脚本相关推荐
- shell编写一个简单的jmeter自动化压测脚本
在公司做压力测试也挺长时间了,每次测试前环境数据准备都需要话费较长时间,所以一直在考虑能不能将整个过程实现自动化进行,于是就抽空写了一个自动化脚本,当然这个脚本目前功能十分简陋,代码也不完善,很有很多 ...
- python cs开发框架_用Python编写一个简单的CS架构后门的方法
用Python编写一个简单的CS架构后门的方法 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: 用Python编写一个简单的CS架构后门的方法.txt ] (友情 ...
- java编写存钱_用Java编写一个简单的存款
package desposit.money; public class DespositMoney { public static void main(String[] args) { Custom ...
- python编写登录_通过Python编写一个简单登录功能过程解析
通过Python编写一个简单登录功能过程解析 需求: 写一个登录的程序, 1.最多登陆失败3次 2.登录成功,提示欢迎xx登录,今天的日期是xxx,程序结束 3.要检验输入是否为空,账号和密码不能为空 ...
- python hello world程序编写_用Python编写一个简单程序
按照软件行业传统习惯,当你学习一种新的编程语言如Python时,首先编写一个"Hello World! "程序. 请执行以下步骤,以创造你的"Hello World!&q ...
- matlab z变换离散化_用C++编写一个简单的光栅化渲染器:3D篇
3D光栅化与2D光栅化在图元绘制方面差别并不大,3D光栅化主要是多了很多坐标系(Local,world,View...),除此外遮挡算法和裁剪算法也会稍微复杂一些. 本篇文章的重点就主要集中在各种坐标 ...
- 用python写一个简单的爬虫_用Python编写一个简单的爬虫
作者信息: Author : 黄志成(小黄) 博客地址: 博客 呐,这是一篇福利教程.为什么这么说呢.我们要爬取的内容是美图网站(嘿嘿,老司机都懂的) 废话不多说.开始今天的表演. 这个图集网站不要问 ...
- java 银行存取款_使用JAVA编写一个简单的银行存取款程序
package com.lw.thread; /* 银行账户类Account(不能透支), 包含账号id(10~16位数字),密码password(6位数字),户主姓名name,余额balence * ...
- java体重指数计算器程序_用Java编写一个简单的计算器程序
展开全部 import java.awt.*; import java.awt.event.*; public class CalcAppDemo extends Frame{ private Tex ...
最新文章
- Python底层实现KNN
- 从 java bean 的内省到 dbutils 的应用
- 二十七、事务隔离级别示例
- MySQL配置文件优化
- NUMA架构和Java
- python实训英文_GitHub - MiracleYoung/You-are-Pythonista: 汇聚【Python应用】【Python实训】【Python技术分享】等等...
- P1028 [NOIP2001 普及组] 数的计算 python
- SQL Server 连接查询(多表连接查询)
- CentOS7 yum 安装 maven
- ① 数据库介绍 及 关系型数据库的关系代数表达式
- h3c简单配置包括一些简单vlan原理
- php自动关机代码,win7定时关机命令是什么
- 不错的javascript极品日历
- 前端新手遇到的问题 ---含“ 文字贯穿线、@font-face、axios ”知识
- 微分中值定理定义及几何意义
- 百度网盘,到底限了谁的速?
- 创建Chinaskills20为GPO管理员;加入到企业管理、域控管理员组;
- 黑马JAVA P41 for循环案例3
- HTML 中的各种标记简介
- httpclient: 设置请求的超时时间,连接超时时间等
热门文章
- 聊聊阿里面试的三个层次!
- Laravel 上传图片及多张图片到七牛云
- 比特币如何达成共识 - 最长链的选择
- 4.5. Rspamd
- hdu 1280 前m大的数 哈希
- 网站安全编程 黑客入侵 脚本黑客 高级语法入侵 C/C++ C# PHP JSP 编程
- C#.NET 可以为不同的客户定制不同的登录窗体的设计思路参考【功能代码组件化,可以灵活选配】...
- Rocchio算法—文本分类
- Windows下visual studio code搭建golang开发环境
- Druid 配置_StatViewServlet配置