1、取样器介绍
取样器是用来模拟用户操作的,向服务器发送请求以及接收服务器的响应数据。
取样器是在线程组内部的元件,也就是说取样器只能在线程组中添加。
取样器(Sampler)是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元。(取样器通常要进行这三个工作)
2、jmeter自带取样器
-
HTTP Request
:HTTP请求 -
Flow Control Action
:测试活动 -
Debug Sampler
:Debug取样器 -
JSR223 Sampler
:JSR223取样器 -
AJP/1.3 Sampler
:AJP/1.3取样器 -
Access Log Sampler
:Access Log取样器 -
Bean Shell Sampler
:Bean Shell取样器 -
FTP Request
:FTP请求 -
JDBC Request
:JDBC Request -
JMS Publisher
:JMS发布 -
JMS Point-to-Point
:JMS点到点 -
JMS Subscriber
:JMS订阅 -
JUnit Request
:JUnit请求 -
Java Request
:Java请求 -
LDAP Extended Request
:LDAP扩展请求默认值 -
LDAP Request
:LDAP请求 -
OS Process Sampler
:OS进程取样器 -
SMTP Sampler
:SMTP取样器 -
TCP Sampler
:TCP取样器 -
Mail Reader Sampler
:邮件阅读者取样器
3、AccessLog Sampler
Access Log Sampler 可以收集和分析真实用户操作的数据,并可用于流量分析,更适合get接口的压测。常见的就是我们的nginx的access.log 日志。
先新建个AccessLog sampler取样器,配置协议、服务地址、端口、文件路径就可以进行压测
access_log:⽤来指定⽇志⽂件的存放路径、格式
Nginx ⽇志参数如下:
$remote_addr 客户端地址 127.0.0.1
$remote_user 客户端⽤户名称
$time_local 访问时间和时区 18 /Dec/ 2019 : 17 : 00 : 01 + 0800
$request 请求的 URI 和 HTTP 协议 "GET /index.html HTTP/1.1"
$http_host 请求地址,即浏览器中你输⼊的地址( IP 或域名) www.baidu.com
192.168 . 100.100
$status HTTP 请求状态 200
$upstream_status upstream 状态 200
$body_bytes_sent 发送给客户端⽂件内容⼤⼩ 1547
$http_referer url 跳转来源 https: //www.baidu.com/
$http_user_agent ⽤户终端浏览器等信息 "Mozilla/4.0 (compatible; MSIE 8.0; Windows
NT 5.1; Trident/4.0; SV1; GTB7.0; .NET4.0C;
$upstream_addr 后台 upstream 的地址,即真正提供服务的主机地址 10.10 . 10.100 : 8000
$request_time 整个请求的总时间 0.205
$upstream_response_time 请求过程中, upstream 响应时间 0.002
nginx场景log解析:awk
查找访问频率最⾼的 URL 和次数:
cat access.log | awk -F ‘^A’ ‘{ print $10}’ | sort | uniq -c
查找当前⽇志⽂件 500 错误的访问:
cat access.log | awk -F ‘^A’ ‘{ if( $5 == 500) print $0}’
查找当前⽇志⽂件 500 错误的数量:
cat access.log | awk -F ‘^A’ ‘{ if( $5 == 500) print $0}’ | wc -l
查找某⼀分钟内 500 错误访问的数量:
cat access.log | awk -F ‘^A’ ‘{ if( $5 == 500) print $0}’ | grep ’09:00’ | wc -l
查找耗时超过 1s 的慢请求:
tail -f access.log | awk -F ‘^A’ ‘{ if( $6>1) print $0}’
假如只想查看某些位:
tail -f access.log | awk -F ‘^A’ ‘{ if( $6>1) print $3″|” $4}’
查找 502 错误最多的 URL:
cat access.log | awk -F ‘^A’ ‘{ if($5== 502) print $11}’ | sort | uniq