1. 安装jmeter(前提,jdk已安装)

下载压缩包(二进制)链接
然后选择5.1的zip版本右键单击复制下载链接。进入我们的系统后,用 cd /opt 切换到opt目录下,然后 输入 wget http://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.1.zip 下载我们需要的文件,下载完成后用ls查看是否下载成功。
image.png
然后输入: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

脚本线程组设置进行参数化:
image.png

  1. ${__P(ThreadNumber,100)} # 线程数设置 默认100
  2. ${__P(Ramp, 5)} # 线程启动时间 默认5秒
  3. ${__P(Duration, 100)} # 执行时间默认100秒
  1. rm -rf ${WORKSPACE}/result/*
  2. rm -rf ${WORKSPACE}/result.jtl
  3. /opt/apache-jmeter-5.1/bin/jmeter \
  4. -JThreadNumber=${ThreadNumber} \
  5. -JRamp=${Ramp} \
  6. -JLoop=${Loop} \
  7. -Jip=${ip} \
  8. -JAPP_TOKEN=${APP_TOKEN} \
  9. -n -t /opt/apache-jmeter-5.1/workspace/testcase/$testcase.jmx \
  10. -r -l ${WORKSPACE}/result.jtl \
  11. -e -o ${WORKSPACE}/result
  1. rm -rf /opt/apache-jmeter-5.1/workspace/result
  2. rm -rf /opt/apache-jmeter-5.1/workspace/result.csv
  3. /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 )》构建后操作
image.png

  1. System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

命令格式为:

  1. -n -t <测试脚本文件路径> -l <日志保存路径> -e -o
  2. -n GUI 模式 -> 在非 GUI 模式下运行 JMeter
  3. -t 测试文件 -> 要运行的 JMeter 测试脚本文件
  4. -l 日志文件 -> 记录结果的文件,文件必须不存在
  5. -e 设置测试完成后生成测试报表
  6. -o 指定报表生成文件夹,文件夹必须为空或者不存在
  7. -r 分布式远程执行 -> 指定远程slave节点执行测试任务
  8. -R 设置分布式服务器列表 -> 配置远程服务器ip列表
  9. -H 代理主机 -> 设置 JMeter 使用的代理主机
  10. -P 代理端口 -> 设置 JMeter 使用的代理主机的端口号

image.png


3. 分布式

Master可以用于存放脚本,发送消息给Slave,收集Slave回传的信息,执行测试。所以Master自身会有消耗,为了不影响性能,建议Master不执行测试。Master、Slave与被测系统之间的关系,如下图所示。
image.png
注:调度机与执行机中的jdk,jmeter版本号一定要保持一致
master调度机配置: 修改/opt/apache-jmeter-5.1/bin/jmeter.properties配置

  • remote_hosts=xxxx,xxxxx (有多少台执行机就写多少个,尽量在同一局域网下使用内网ip)

image.png

  • 修改 server.rmi.ssl.disable=true

slave执行机配置:修改/opt/apache-jmeter-5.1/bin/jmeter.properties配置

  • 开放server_port,server.rmi.localport 的端口(默认1099);注:自定义端口不要与服务器已经开启的端口冲突

image.png

  • 修改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 来运行。))

image.png

查看进程:ps -ef|grep jmeter-server (lsof -i:10991)
yum install lsof
kill进程 kill -9 26679

附件

LINUX 查看硬件配置命令
实施进程top 命令
image.png
第一行:

  1. 01:06:48 当前时间
  2. up 1:22 系统运行时间,格式为时:分
  3. 1 user 当前登录用户数
  4. load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第二,三行

  1. total 进程总数
  2. running 正在运行的进程数
  3. sleeping 睡眠的进程数
  4. stopped 停止的进程数
  5. zombie 僵尸进程数
  6. Cpu(s):
  7. 0.3% us 用户空间占用CPU百分比
  8. 1.0% sy 内核空间占用CPU百分比
  9. 0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
  10. 98.7% id 空闲CPU百分比
  11. 0.0% wa 等待输入输出的CPU时间百分比
  12. 0.0%hi:硬件CPU中断占用百分比
  13. 0.0%si:软中断占用百分比
  14. 0.0%st:虚拟机占用百分比

最后两行

  1. Mem:
  2. 191272k total 物理内存总量
  3. 173656k used 使用的物理内存总量
  4. 17616k free 空闲内存总量
  5. 22052k buffers 用作内核缓存的内存量
  6. Swap:
  7. 192772k total 交换区总量
  8. 0k used 使用的交换区总量
  9. 192772k free 空闲交换区总量
  10. 123988k cached 缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。

进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义
image.png

  1. 序号 列名 含义
  2. a PID 进程id
  3. b PPID 父进程id
  4. c RUSER Real user name
  5. d UID 进程所有者的用户id
  6. e USER 进程所有者的用户名
  7. f GROUP 进程所有者的组名
  8. g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
  9. h PR 优先级
  10. i NI nice值。负值表示高优先级,正值表示低优先级
  11. j P 最后使用的CPU,仅在多CPU环境下有意义
  12. k %CPU 上次更新到现在的CPU时间占用百分比
  13. l TIME 进程使用的CPU时间总计,单位秒
  14. m TIME+ 进程使用的CPU时间总计,单位1/100
  15. n %MEM 进程使用的物理内存百分比
  16. o VIRT 进程使用的虚拟内存总量,单位kbVIRT=SWAP+RES
  17. p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb
  18. q RES 进程使用的、未被换出的物理内存大小,单位kbRES=CODE+DATA
  19. r CODE 可执行代码占用的物理内存大小,单位kb
  20. s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
  21. t SHR 共享内存大小,单位kb
  22. u nFLT 页面错误次数
  23. v nDRT 最后一次写入到现在,被修改过的页面数。
  24. w S 进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
  25. x COMMAND 命令名/命令行
  26. y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
  27. z Flags 任务标志,参考 sched.h

top使用格式
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
参数说明

  1. d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
  2. p 通过指定监控进程ID来仅仅监控某个进程的状态。
  3. q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
  4. S 指定累计模式
  5. s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
  6. i 使top不显示任何闲置或者僵死进程。
  7. c 显示整个命令行而不只是显示命令名
  1. top //每隔5秒显式所有进程的资源占用情况
  2. top -d 2 //每隔2秒显式所有进程的资源占用情况
  3. top -c //每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
  4. top -p 12345 -p 6789//每隔5秒显示pid12345pid6789的两个进程的资源占用情况
  5. top -d 2 -c -p 123456 //每隔2秒显示pid12345的进程的资源使用情况,并显式该进程启动的命令行参数

转载 https://www.yuque.com/liberjiang/gp7wz4/nq3zmh