使用JMeter如何实现并发压测下的只登录一次

  • 性能测试过程中经常有需要对案例进行大并发压测,但是只需要登录一次即可,jmeter自带了仅一次控制器,但此控制器只是针对单线程才有意义,多线程下,设置多少线程数还是会执行多少次
  • 1000并发用户下,系统还是会执行1000次登录,有10次登录失败,就会影响实际压测案例的结果,本文就介绍如何使用全局变量实现真正意义上的只执行一次登录

一、请求分析

1. 本次需要对系统的一个查询操作做性能测试,首先使用谷歌浏览器登录系统,按F12进入调试页面,然后访问查询页面,下图为查询接口地址
在这里插入图片描述
2. 下图为该接口的信息头,由图可知,需要先登录获取Cookie,并且在查询请求信息头申明该Cookie即可实现查询操作
在这里插入图片描述
二、脚本开发

1. 本次需要先开发好登录脚本,由下图可知,MOD_AUTH_CAS变量会在登录1请求中的子请求(重定向)返回
在这里插入图片描述
2. 只需要在该请求下添加一个正则表达式提取器即可,如下图所示
在这里插入图片描述
3. MOD_AUTH_CAS变量提取成功,我们只需要在该请求后面使用beanshell申明该变量为全局变量即可,这样其它线程也能调用该变量,格式如下 ,其中Th_MOD_AUTH_CAS是设置为全局变量的变量名,格式如下:
${__setProperty(Th_MOD_AUTH_CAS,${MOD_AUTH_CAS},)}
在这里插入图片描述
5. 在查询线程组下,申明信息头,并且定义cookie字段,值使用MOD_AUTH_CAS=${__P(Th_MOD_AUTH_CAS,)}进行调用,如下图所示
在这里插入图片描述
三、多线程验证

1. 首先设置线程组为2线程2循环,看是否能正常执行
在这里插入图片描述
2. 设置测试计划,测试计划勾选独立运行每个线程组,并且把登录线程组放置在最前面,这样系统就会先执行登录,在执行其它线程组
在这里插入图片描述
3. 执行脚本,如下图所示,系统只登录了一次,正常进行了4次查询,4次查询是2线程执行了2次循环
在这里插入图片描述
在这里插入图片描述
4. 本文介绍了登录使用Cookie鉴权如何实现一次登录,多并发下执行压测,如果系统调用了token,规则一样,只需要把token全局化即可实现


如果文章对你有帮助,欢迎关注本人公众号,公众号与本平台文章同步,方便大家查阅,本人会持续推出与测试有关的文章,与大家分享测试技术,每一篇原创文章都是用心编写,杜绝抄袭复制


QQ技术交流群:加群请输入验证信息 CSDN
              在这里插入图片描述


微信二维码关注公众号:

在这里插入图片描述


关注之后,回复资源下载,即可获取本人共享的各种资源下载地址
在这里插入图片描述

<think>好的,我需要帮助用户配置JMeter进行1000并发,并提供优化建议。首先,用户的需求很明确,但作为新手,可能需要详细的步骤指导。根据引用内容,JMeter本身在高并发下可能出现瓶颈,所以配置优化是关键。 首先,硬件和系统配置方面。引用[2]提到JMeter支持大并发但不是无限的,所以需要确保试机的资源足够。内存方面,调整JMeter的JVM参数,比如-Xms和-Xmx,避免内存不足。同时,用户需要确认网络带宽是否足够,1000并发可能需要较高的带宽,否则会成为瓶颈。 然后是试计划设计。线程组设置,用户需要设置线程数为1000,合理调整Ramp-Up时间。引用[3]提到了Address Already in use错误,可能需要修改系统TCP参数,比如net.ipv4.tcp_tw_reuse和增加端口范围。这些系统调优步骤很重要,避免连接数限制导致的问题。 监听器的选择也很关键,高并发使用聚合报告而不是图形结果,减少资源消耗。分布式试可能也是必要的,单机无法模拟1000并发时,使用多台JMeter从机,引用[3]中提到的分布式试方法需要指导用户配置。 脚本优化方面,用户需要避免不必要的断言和监听器,使用CSV数据文件读取参数,引用[1]指出JMeter易用,但脚本设计不当会影响结果。比如使用正则表达式提取器或JSON提取器时要注意性能。 监控部分,用户需要实时监控JMeter本身的资源使用情况,如CPU和内存。同时,监控被系统的中间件和数据库指标,引用[3]提到的监控指标需要涵盖这些方面,帮助用户定位瓶颈。 最后,常见问题处理,比如超时、Address Already in use错误,以及结果分析。引用[2]提到的高并发JMeter自身的问题,比如参数化数据未及时释放,需要提示用户使用命令行模式运行,减少GUI开销。 总结下来,步骤包括环境准备、试计划配置、系统优化、脚本优化、分布式试、监控和结果分析。需要将这些步骤详细列出,并给出具体的参数设置和命令示例,如JMeter启动命令和Linux内核参数修改。同时,引用相关文献支持建议,比如引用[2]和[3]中的优化点,确保建议的可靠性。</think>### JMeter 1000并发配置与优化指南 #### 一、环境准备 1. **硬件配置** - 试机建议配置:4核8G以上(单机需更高配置)[^2] - 网络带宽:至少千兆网络(避免带宽成为瓶颈) - 系统参数调整(Linux示例): ```bash # 修改最大文件句柄数 ulimit -n 65535 # 调整TCP参数(需root权限) sysctl -w net.ipv4.tcp_tw_reuse=1 sysctl -w net.ipv4.ip_local_port_range="1024 65535" ``` 2. **JMeter配置优化** - 修改`jmeter/bin/jmeter`(Linux/Mac)或`jmeter.bat`(Windows): ```bash # 调整JVM内存(根据机器配置调整) HEAP="-Xms4g -Xmx8g" ``` #### 二、试计划配置 1. **线程组设置** ```plaintext Thread Group ├─ Number of Threads: 1000 ├─ Ramp-Up Period: 60秒(逐步加) └─ Loop Count: 永久(通过调度器控制时长) ``` 2. **协议与请求配置** - 使用HTTP请求时启用`Keep-Alive` - 添加`HTTP Header Manager`设置`Content-Type`和`Connection: keep-alive` 3. **监听器选择** - 必选:`Aggregate Report`、`Summary Report` - 避免使用`View Results Tree`(仅调试时启用) #### 三、分布式(单机不足时)[^3] 1. 控制机与从机安装相同版本JMeter 2. 从机配置`jmeter-server`(修改`jmeter.properties`): ```properties server.rmi.ssl.disable=true ``` 3. 控制机执行命令: ```bash jmeter -n -t test.jmx -R 192.168.1.101,192.168.1.102 -l result.jtl ``` #### 四、脚本优化技巧 1. **参数化处理** - 使用`CSV Data Set Config`代替硬编码参数 - 避免在脚本中使用大量正则表达式(改用JSON Extractor) 2. **资源复用** - 启用`HTTP Cookie Manager`管理会话 - 对静态资源使用`Cache Manager` #### 五、监控与瓶颈排查 1. **JMeter自身监控** ```bash # 实时查看资源占用 top -H -p $(pgrep java) ``` 2. **被系统监控** - 中间件:Tomcat连接池使用率、Nginx活跃连接数[^3] - 数据库:慢查询日志、锁竞争情况 #### 六、常见问题解决 1. **`Address already in use`错误** - 添加JVM参数: ```bash -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true ``` 2. **TPS波动过大** - 检查后端服务日志是否有异常 - 使用`jp@gc - PerfMon Metrics Collector`监控服务器资源 #### 七、执行命令示例 ```bash # 命令行模式启动(无GUI) jmeter -n -t test.jmx -l result.jtl -e -o report/ ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值