在
JMeter
图形用户界面使您可以轻松地配置性能脚本,添加新的测试内容和监控测试执行,通过使用各种不同的监听。但这种“易于使用”的解决方案有其缺点,尤其是当您需要将它用于更复杂的情况时。
例如,当您开始执行数千个用户的负载测试时,您可能会感觉到GUI模式的缺点,因为在GUI模式下运行
JMeter
会占用大量机器资源。您可能会对如何在持续集成服务器(CI)中使用JMeter GUI感到困惑。答案是 - 没有办法。
幸运的是,JMeter允许您将性能测试保存为脚本,并通过命令行以
非GUI模式
运行它们。这样可以运行非常大的测试,并将相同的命令添加到持续集成和自动化过程中。
不打算从头开始介绍GUI性能脚本的创建,假设您有一些相关经验。简而言之,这是性能脚本配置:
线程组:
- Number of Threads【线程数量】:100
- Ramp-Up Period (seconds)【加速时间(秒)】:120
- Loop count【循环数】:Forever【永远】
- Scheduler checked【计划程序已检查】
- Duration (seconds)【持续时间(秒)】:300
HTTP Sampler(1/2):
- Name【名称】:主页请求
- Server【服务器名称】:你自己的服务器IP地址
- Method【方法】:GET
HTTP Sampler (2/2):
- Name【名称】: 查找航班请求
- Server Name【服务器名称】: blazedemo.com
- Method: POST
- Path【方法】: reserve.php
- Parameters【参数】:
- fromPort: Paris
- toPort: Buenos+Aires
添加一个高斯随机定时器模拟用户行为(Gaussian Random TImer):
- Name【名称】:Gaussian Random TImer
- Deviation (in milliseconds)偏差(以毫秒为单位):1000
- Constant Delay Offset (in milliseconds)恒定延迟偏移(以毫秒为单位):5000
保存用于通过命令行运行性能测试的JMX文件。你可以这样做:
文件 - >保存测试计划
并选择“JMX文件”。我将它命为
NonGuiTestMonitoring.jmx
此时,您可以忘记JMeter GUI应用程序,并关闭它,直到您想要更改脚本中的某些内容。
1.控制台输出的JMeter日志监控
要运行JMeter JMX文件,您可以使用以下命令行模板:
jmeter -n -t [jmx_path]
- -n标志表示“在非GUI模式下运行JMeter”
- -t用于指定jmx文件的路径
假设我们当前的位置是带有创建脚本的文件夹,可以使用以下命令运行它:
jmeter -n -t NonGuiTestMonitoring.JMX
让我们运行并查看哪些细节可以从JMeter非GUI模式获得。
正如你所看到的,在执行命令后JMeter提供了一些有用的统计数据,可用于脚本执行的基本实时监控。我们来看看统计信息并验证我们的结果:
- “00:00:24 = 0.2 / s 5”表示在24秒内,我们向服务器发送了5个请求,平均吞吐量为每秒0.2个请求
- “Avg:182”表示此时的平均响应时间为182毫秒
- “Min:88”意味着来自该时间段的发送请求的最小响应时间是88毫秒
- “Max:483”表示该时间段内发送请求的最大响应时间为483毫秒
- “Err:0(0.00%)”意味着我们在该期间的请求中没有任何错误,并且总请求中的错误百分比相应为0
- Active:显示正在执行此期间请求的活动用户数
- Started:显示自测试开始以来已启动线程的总数
- Finished:显示自测试开始以来已完成执行的线程总数
这些指标向我们展示了关于性能测试执行的一些基本统计数据。但是,它们不包含任何特定的细节(比如:CPU、内存啊),只反映一般的服务器状态。让我们看看我们可以如何改进。
2.通过Taurus监测JMeter结果
运行这个命令
:bzt NonGuiTestMonitoring.JMX
您可以跟踪活动用户和所有用户,单独针对每个采样器的不同响应指标,错误和执行计算机指标。如果您只想实时监控测试并且不想浪费时间进行其他配置,则此解决方案非常完美。除了控制台之外,你不需要使用任何东西也是有帮助的,你甚至可以在没有桌面的远程服务器(通过ssh)上运行这些监视器,并且仍然可以看到执行监视器。