一、配置Linux jdk环境:

1. 将下载好的jdk放到Linux /home/wwwroot/ichangtou/server 目录下(下载的时候注意是32还是64位)。比如我的Linux系统是64位,下载64位的jdk

2.解压缩,解压缩命令 tar -zxvf jdk-8u191-linux-64.tar.gz   

3. 配置jdk环境变量,编辑 /etc/profile,在末尾新增如下配置   

export JAVA_HOME=/home/wwwroot/ichangtou/server/jdk1.8.0_161
 export CLASSPATH=$JAVA_HOME/lib
 export PATH=$JAVA_HOME/bin:$PATH

4、让设置的配置立即生效,输入命令:source /etc/profile。然后输入 java -version 测试下

二、安装配置jmeter:

1、下载jmeter:http://jmeter.apache.org/download_jmeter.cgi      linux下下载.tgz包

               上传至linux服务器:rz命令

               解压tgz包:tar zxvf apache-jmeter-5.1.1.tgz -C ./

 2、配置jmeter环境变量:

export JMETER=/opt/apache-jmeter-5.1.1
 export CLASSPATH=$JMETER/lib/ext/ApacheJMeter_core.jar:$JMETER/lib/jorphan.jar:$CLASSPATH
 export PATH=$JMETER/bin/:$PATH

3、让设置的配置立即生效,输入命令:source /etc/profile
4、查看是否安装成功:jmeter –v 或者 $jmeter_home/bin/jmeter.sh –v

5、jmeter需要添加插件的,按步骤 1、2 操作,然后覆盖到 jmeter 根目录即可

三、jmeter 命令使用

/opt/scripts

将脚本ichangtou.jmx和参数化文件放在scripts文件夹下面,新建一个Report文件夹,运行如下命令,脚本叫可以跑起来了

jmeter -n -t ichangtou.jmx -l Result/report.jtl

四、分布式压测方式

原理图:

压力测试 ab centos 安装 linux 压力测试命令_压力测试 ab centos 安装

使用3台linux测试机部署jmeter,定义好哪一台服务器作为控制机Master和负载机slave

3台linux测试机需安装相同版本的jdk和jmeter,参数化文件在每一台服务器上都需要放置在同一路径,脚本放在控制机

1、在控制机上修改bin/jmeter.properties,添加从机的IP及端口 1099是默认的rmi通信端口并修改自己的绑定端口,如下

remote_hosts=172.16.43.6:1099,172.16.43.7:1099

2、在控制机和负载机上修改:server.rmi.ssl.disable=true

压力测试 ab centos 安装 linux 压力测试命令_压力测试 ab centos 安装_02

3、在负载机上修改:

remote_hosts=172.16.43.6

压力测试 ab centos 安装 linux 压力测试命令_压力测试 ab centos 安装_03

#server_port=1099

#server.rmi.localport=1099

2、开启负载机上的server服务:在bin目录下运行jmeter-server

压力测试 ab centos 安装 linux 压力测试命令_压力测试 ab centos 安装_04

3、在控制机执行分布式命令

cd /opt/apache-jmeter-5.1.1/bin
jmeter -n -t /opt/scripts/ichangtou.jmx -l /opt/scripts/Result/report.jtl -R 172.16.43.7:1099,172.16.43.6:1099

jmeter -n -t goods.jmx -l 100.jtl 执行脚本 n : 非GUI 模式执行JMeter t  :执行测试文件所在位置及文件名 l  : 生成的测试结果文件,jtl文件格式 rz上传 ,sz下载 vi goods1.jxm

 

参数说明 :

-n  告诉jmeter使用nogui模式运行测试

-t  执行的测试脚本名

-R  后面跟随负载机的ip地址 ,注意用逗号隔开

-l  后面跟着测试结果记录的路径与文件名,主意这个文件jmeter不会自己创建,请预先创建好,

注:若有host同样也需要修改从机的host文件,否则会出现error

ip地址~空格~hostname



 

 

①删除redis数据:root下执行:sh del_redis_pro.sh user_token*

#!/bin/bash 
 redis-cli -c -h 172.16.18.45 -p 6380 -a "SutcS7RUDMTq9zkC" 2>/dev/null keys $1 | xargs -i redis-cli -h 172.16.18.45 -p 6380 -a "SutcS7RUDMTq9zkC" 2>/dev/null del {}
 redis-cli -c -h 172.16.18.45 -p 6381 -a "SutcS7RUDMTq9zkC" 2>/dev/null keys $1 | xargs -i redis-cli -h 172.16.18.45 -p 6381 -a "SutcS7RUDMTq9zkC" 2>/dev/null del {}
 redis-cli -c -h 172.16.18.46 -p 6380 -a "SutcS7RUDMTq9zkC" 2>/dev/null keys $1 | xargs -i redis-cli -h 172.16.18.46 -p 6380 -a "SutcS7RUDMTq9zkC" 2>/dev/null del {}
 redis-cli -c -h 172.16.18.46 -p 6381 -a "SutcS7RUDMTq9zkC" 2>/dev/null keys $1 | xargs -i redis-cli -h 172.16.18.46 -p 6381 -a "SutcS7RUDMTq9zkC" 2>/dev/null del {}
 redis-cli -c -h 172.16.18.47 -p 6380 -a "SutcS7RUDMTq9zkC" 2>/dev/null keys $1 | xargs -i redis-cli -h 172.16.18.47 -p 6380 -a "SutcS7RUDMTq9zkC" 2>/dev/null del {}
 redis-cli -c -h 172.16.18.47 -p 6381 -a "SutcS7RUDMTq9zkC" 2>/dev/null keys $1 | xargs -i redis-cli -h 172.16.18.47 -p 6381 -a "SutcS7RUDMTq9zkC" 2>/dev/null del {}echo "success"

②重新上传token:scripts下执行:sh set_token.sh

#!/bin/bash
 cat SetToken.txt | redis-cli -c -h 172.16.18.45 -p 6380 -a "SutcS7RUDMTq9zkC"
 cat SetToken.txt | redis-cli -c -h 172.16.18.46 -p 6380 -a "SutcS7RUDMTq9zkC"
 cat SetToken.txt | redis-cli -c -h 172.16.18.47 -p 6380 -a "SutcS7RUDMTq9zkC"
 cat SetToken.txt | redis-cli -c -h 172.16.18.45 -p 6381 -a "SutcS7RUDMTq9zkC"
 cat SetToken.txt | redis-cli -c -h 172.16.18.46 -p 6381 -a "SutcS7RUDMTq9zkC"
 cat SetToken.txt | redis-cli -c -h 172.16.18.47 -p 6381 -a "SutcS7RUDMTq9zkC"

③启动脚本:scripts下执行:sh start.sh

 

压力机启动脚本:

【
#!/bin/bash
# 获取当前时间并设置为文件夹名称
 file_name=`date +%Y%m%d%H%M`
 cd /opt/apache-jmeter-5.1.1/bin
 remote_hosts=172.16.43.7:1099,172.16.43.6:1099local(){
         # 本机启动Jmeter并输出报告
         jmeter -n -t /opt/scripts/ichangtou.jmx -l /opt/scripts/Result/report_${file_name}/report.jtl -e -o /opt/scripts/Result/report_${file_name}
 }cluster(){
         # 远程启动并生成报告
         jmeter -n -t /opt/scripts/ichangtou.jmx -l /opt/scripts/Result/${file_name}/report.jtl -R 172.16.43.7:1099,172.16.43.6:1099 -e -o /opt/scripts/Result/${file_name}
     # jmeter -n -t /opt/scripts/ichangtou.jmx -l /opt/scripts/Result/${file_name}/report.jtl -R ${remmote_hosts} -e -o /opt/scripts/Result/report_${file_name}
 }#local
 cluster】


 

 

踩坑:

1、服务器上脚本需要加cookie管理器,不然就会生成很多个接口

2、负载机csv文件替换一定要同步压力机文件

3、若是报这样的错:The JVM should have exited but did not.修改jmeter.properties 中的jmeterengine.force.system.exit=true。

4、理论上负载机csv文件路径和压力机一致,如果报错,将负载机csv文件放在bin目录下面