超赞!JMeter 模拟超过 5 万的并发用户

本文将从负载测试的角度,描述了做一次流畅的5万用户并发测试需要做的事情 。
你可以在本文的结尾部分看到讨论的记录 。
快速的步骤概要

  1. 编写你的脚本
  2. 使用JMeter进行本地测试
  3. BlazeMeter沙箱测试
  4. 使用一个控制台和一个引擎设置Users-per-Engine的数量
  5. 设置并测试你的集合 (1个控制台和10-14 引擎)
  6. 使用 Master / Slave 特性来达成你的最大CC目标

超赞!JMeter 模拟超过 5 万的并发用户

文章插图
 
步骤1 : 编写你的脚本开始之前,请确定从JMeter的Apache社区jmeter.apache.org 获得了最新的版本.
你也会要下载这些附加的插件,因为它们可以让你的工作更轻松.
有许多方法可以获得脚本:
  1. 使用 BlazeMeter 的 Chrome 扩展 来记录你的方案
  2. 使用 JMeter HTTP(S) 测试脚本记录器 来设置一个代理,那样你就可以运行你的测试并记录下所有的东西
  3. 从头开始全部手工构建(可能是功能/QA测试)
如果你的脚本是一份记录的结果(像步骤1&2), 请牢记:
  1. 你需要改变诸如Username & Password这样的特定参数,或者你也许会想要设置一个CSV文件,有了里面的值每个用户就可以是不同的.
  2. 为了完成诸如“添加到购物车”,“登录”还有其它这样的请求,你也许要使用正则表达式,JSON路径提取器,XPath提取器,来提取诸如Token字符串,表单构建ID还有其它要素
  3. 保持你的脚本参数化,并使用配置元素,诸如默认HTTP请求,来使得在环境之间切换时你的工作更轻松.
步骤2 : 使用JMeter进行本地测试在1个线程的1个迭代中使用查看结果树要素,调试样本,虚拟样本还有打开的日志查看器(一些JMeter的错误会在里面报告),来调试你的脚本.
遍历所有的场景(包括True 或者 False的回应) 来确保脚本行为确如预期…
在成功使用一个线程测试之后——将其提高到10分钟10到20个线程继续测试:
  1. 如果你想要每个用户独立——是那样的么?
  2. 有没有收到错误?
  3. 如果你在做一个注册过程,那就看看你的后台 - 账户是不是照你的模板创建好了? 它们是不是独立的呢?
  4. 从总结报告中,你可以看到对测试的统计 - 它们有点用么? (平均响应时间, 错误, 每秒命中率)
一旦你准备好了脚本:
  1. 通过移除任何调试和虚拟样本来清理脚本,并删除你的脚本侦听器
  2. 如果你使用了侦听器(诸如 "将响应保存到一个文件"),请确保你没有使用任何路径! , 而如果他是一个侦听器或者一个CSV数据集配置——请确保你没有使用你在本地使用的路径 - 而只要文件名(就好像跟你的脚本在同一个文件夹)
  3. 如果你使用了自己专有的JAR文件,请确保它也被上传了.
  4. 如果你使用了超过一个线程组(不是默认的那个) - 请确保在将其上传到BlazeMeter之前设置了这个值.
步骤3 : BlazeMeter沙箱测试【超赞!JMeter 模拟超过 5 万的并发用户】如果那时你的第一个测试——你应该温习一下 这篇 有关如何在BlazeMeter中创建测试的文章.
将沙箱的测试配置设置成,用户300,1个控制台, 时间50分钟.
对沙箱进行这样的配置让你可以在后台测试你的脚本,并确保上的BlazeMeter的一切都运行完好 。
为此,先按下灰色的按钮: 告诉JMeter引擎我想要完全控制! - 来获得对你的测试参数的完全控制 。
通常你将会遇到的问题:
  1. 防火墙 - 确保你的环境对BlazeMeter的CIDR 列表 (它们会实时更新)开发,并把它们放入白名单中
  2. 确保你所有的测试文件, 比如: CSVs, JAR, JSON, User.properties 等等.. 都可以使用
  3. 确保你没有使用任何路径
如果仍然有问题,那就看看错误日志吧(你应该可以把整个日志都下载下来).
一个沙箱的配置可以是这样的:
  • 引擎: 是能使控制台(1 个控制台 , 0 个引擎)
  • 线程: 50-300
  • 产能提升: 20 分钟
  • 迭代: 一直测试下去
  • 时间: 30-50 分钟
这可以让你在产能提升期间获得足够多的数据(以防你遇到问题),而你将可以对结果进行分析,以确保脚本的执行确如预期 。
你应该观察下Waterfall / WebDriver 选项卡来看看请求是否正常,你不应该在这一点上出任何问题(除非你是故意的) 。
你应该盯着监控选项卡,观察期内存和CPU消耗 - 这对你在步骤4中尝试设置每一个引擎的用户数量 。


推荐阅读