1. 安装jmeter(前提,jdk已安装)
下载压缩包(二进制)链接
然后选择5.1的zip版本右键单击复制下载链接。进入我们的系统后,用 cd /opt 切换到opt目录下,然后 输入 wget http://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.1.zip 下载我们需要的文件,下载完成后用ls查看是否下载成功。
然后输入:unzip apache-jmeter-5.1.zip 解压缩这个文件。解压完成后,cd /opt/apache-jmeter-5.1/bin 进入bin文件夹,然后输入: chmod 777 jmeter.sh 赋予这个启动项权限。链接
export PATH=/opt/apache-jmeter-5.1/bin:$PATH
export JMETER=/opt/apache-jmeter-5.1
export CLASSPATH=$JMETER/lib/ext/ApacheJMeter_core.jar:$JMETER/lib/jorphan.jar:$JMETER/lib/logkit-2.0.jar:$CLASSPATH
source /etc/profile:使得配置的环境变量立即生效。到这里就差不多安装完成了,剩下的就是运行了。
后台启动jmeter-server : nohup /opt/apache-jmeter-5.1/bin/jmeter-server &
影响性能考虑点包括:数据库、应用程序、中间件(tomact、Nginx)、网络和操作系统等方面
2. 集成Jenkins
脚本线程组设置进行参数化:
${__P(ThreadNumber,100)} # 线程数设置 默认100
${__P(Ramp, 5)} # 线程启动时间 默认5秒
${__P(Duration, 100)} # 执行时间默认100秒
rm -rf ${WORKSPACE}/result/*
rm -rf ${WORKSPACE}/result.jtl
/opt/apache-jmeter-5.1/bin/jmeter \
-JThreadNumber=${ThreadNumber} \
-JRamp=${Ramp} \
-JLoop=${Loop} \
-Jip=${ip} \
-JAPP_TOKEN=${APP_TOKEN} \
-n -t /opt/apache-jmeter-5.1/workspace/testcase/$testcase.jmx \
-r -l ${WORKSPACE}/result.jtl \
-e -o ${WORKSPACE}/result
rm -rf /opt/apache-jmeter-5.1/workspace/result
rm -rf /opt/apache-jmeter-5.1/workspace/result.csv
/opt/apache-jmeter-5.1/bin/jmeter -n -t /opt/apache-jmeter-5.1/workspace/testcase/course_Living.jmx -l /opt/apache-jmeter-5.1/workspace/result.csv -e -o /opt/apache-jmeter-5.1/workspace/result
新建任务,增加构建步骤(执行shell、Excute system Groovy script )》构建后操作
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
命令格式为:
-n -t <测试脚本文件路径> -l <日志保存路径> -e -o
-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
-t 测试文件 -> 要运行的 JMeter 测试脚本文件
-l 日志文件 -> 记录结果的文件,文件必须不存在
-e 设置测试完成后生成测试报表
-o 指定报表生成文件夹,文件夹必须为空或者不存在
-r 分布式远程执行 -> 指定远程slave节点执行测试任务
-R 设置分布式服务器列表 -> 配置远程服务器ip列表
-H 代理主机 -> 设置 JMeter 使用的代理主机
-P 代理端口 -> 设置 JMeter 使用的代理主机的端口号
3. 分布式
Master可以用于存放脚本,发送消息给Slave,收集Slave回传的信息,执行测试。所以Master自身会有消耗,为了不影响性能,建议Master不执行测试。Master、Slave与被测系统之间的关系,如下图所示。
注:调度机与执行机中的jdk,jmeter版本号一定要保持一致
master调度机配置: 修改/opt/apache-jmeter-5.1/bin/jmeter.properties配置
- remote_hosts=xxxx,xxxxx (有多少台执行机就写多少个,尽量在同一局域网下使用内网ip)
- 修改 server.rmi.ssl.disable=true
slave执行机配置:修改/opt/apache-jmeter-5.1/bin/jmeter.properties配置
- 开放server_port,server.rmi.localport 的端口(默认1099);注:自定义端口不要与服务器已经开启的端口冲突
- 修改server.rmi.ssl.disable=true
- 启动slave执行机 /opt/apache-jmeter-5.1/bin/jmeter-server (linux上关闭窗口或者Ctrl+C会导致进程关闭,可以通过nohup /opt/apache-jmeter-5.1/bin/jmeter-server.sh 来运行。))
查看进程:ps -ef|grep jmeter-server (lsof -i:10991)
yum install lsof
kill进程 kill -9 26679
附件
LINUX 查看硬件配置命令
实施进程top 命令
第一行:
01:06:48 当前时间
up 1:22 系统运行时间,格式为时:分
1 user 当前登录用户数
load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二,三行
total 进程总数
running 正在运行的进程数
sleeping 睡眠的进程数
stopped 停止的进程数
zombie 僵尸进程数
Cpu(s):
0.3% us 用户空间占用CPU百分比
1.0% sy 内核空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
98.7% id 空闲CPU百分比
0.0% wa 等待输入输出的CPU时间百分比
0.0%hi:硬件CPU中断占用百分比
0.0%si:软中断占用百分比
0.0%st:虚拟机占用百分比
最后两行
Mem:
191272k total 物理内存总量
173656k used 使用的物理内存总量
17616k free 空闲内存总量
22052k buffers 用作内核缓存的内存量
Swap:
192772k total 交换区总量
0k used 使用的交换区总量
192772k free 空闲交换区总量
123988k cached 缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义
序号 列名 含义
a PID 进程id
b PPID 父进程id
c RUSER Real user name
d UID 进程所有者的用户id
e USER 进程所有者的用户名
f GROUP 进程所有者的组名
g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
h PR 优先级
i NI nice值。负值表示高优先级,正值表示低优先级
j P 最后使用的CPU,仅在多CPU环境下有意义
k %CPU 上次更新到现在的CPU时间占用百分比
l TIME 进程使用的CPU时间总计,单位秒
m TIME+ 进程使用的CPU时间总计,单位1/100秒
n %MEM 进程使用的物理内存百分比
o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
r CODE 可执行代码占用的物理内存大小,单位kb
s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
t SHR 共享内存大小,单位kb
u nFLT 页面错误次数
v nDRT 最后一次写入到现在,被修改过的页面数。
w S 进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
x COMMAND 命令名/命令行
y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
z Flags 任务标志,参考 sched.h
top使用格式
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
参数说明
d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
p 通过指定监控进程ID来仅仅监控某个进程的状态。
q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
S 指定累计模式
s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
i 使top不显示任何闲置或者僵死进程。
c 显示整个命令行而不只是显示命令名
top //每隔5秒显式所有进程的资源占用情况
top -d 2 //每隔2秒显式所有进程的资源占用情况
top -c //每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
top -p 12345 -p 6789//每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况
top -d 2 -c -p 123456 //每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数