JMeter负载测试
JMeter负载测试是使用一个名为Apache JMeter的负载测试工具完成的测试过程,Apache JMeter是一个基于Java的开源桌面应用程序。它还有助于分析高负载下的整体服务器。
JMeter性能测试是使用Apache JMeter测试Web应用程序性能的测试方法。JMeter for Performance Testing有助于同时测试静态和动态资源,有助于发现并发用户JMeter性能测试,包括Web应用的负载测试和压力测试。
Apache JMeter测试工具在性能测试方面提供以下好处
- JMeter既可以用来测试静态资源(比如JavaScript和HTML)的性能,也可以用来测试动态资源(比如JSP、Servlet和AJAX)的性能。
- JMeter可以发现网站可以处理的最大并发用户数
- JMeter提供各种性能报告的图形分析。
JMeter性能测试包括:
- 负载测试:通过模拟多个用户并发访问Web服务来对预期使用情况进行建模。
- 压力测试:每台Web服务器都有最大负载能力。当负载超过极限时,压力测试的目的是找出Web服务器可以处理的最大负载。
下图显示了JMeter负载测试如何模拟重负载:
在JMeter中创建性能测试计划
在本教程中,我们将对1000名用户进行baidu.com的性能分析 。在测试目标Web应用程序的性能之前,我们应该确定-
- 正常负载:访问网站的平均用户数
- 高负载:访问网站的最大用户数
- 这次测试的目标是什么?
以下是这个实际示例的路线图
步骤1) 添加线程组
- 启动JMeter
- 在树上选择测试计划
- 添加线程组
右键单击“测试计划”,添加一个新的线程组:Add->Thread(Users)->Thread Group
在线程组控制面板中,输入线程属性,如下所示:
- 线程数:100(连接到目标网站的用户数:100)
- 循环次数:10(执行测试次数)
- 启动期:100
线程计数和循环计数不同。
启动周期告诉JMeter在启动下一个用户之前要延迟多长时间。例如,如果我们有100个用户和100秒的启动周期,那么启动用户之间的延迟将是1秒(100秒/100个用户)
步骤2) 添加JMeter元素
现在我们确定此测试中的JMeter元素。这些元素包括
-
HTTP求默认值
可以通过右键单击Thread Group并选择:Add->Config Element->HTTP request Defaults来添加此元素。
在Http request Defaults控制面板中,输入正在测试的网站名称(http://www.google.com)
-
HTTP请求
右键单击Thread Group并选择:Add->Sampler->HTTP Request。
在HTTP求控制面板中,路径字段指示要将哪个URL求发送到Google服务器。
例如,如果在路径字段中输入“日历”。JMeter将创建指向谷歌服务器的URL求http://www.google.com/calendar
如果保留路径字段 空白 jeter将创建指向谷歌服务器的url求http://www.google.com。 在此测试中,将路径字段保留为空,以使JMeter创建到Google服务器的http://www.google.com请求。
步骤3) 添加图形结果
JMeter可以将测试结果以Graph格式显示。 右键单击“测试计划”,选择“添加”->“侦听器”->“绘制结果图”
步骤4) 运行测试并获得测试结果
按工具栏上的Run(运行)按钮(Ctrl+R)开始软件测试过程。将看到测试结果实时显示在Graph上。 下图显示了一个测试计划的图表,其中我们模拟了访问www.google.com网站的100个用户。
在图片底部,有以下用颜色表示的统计数据:
- 黑色:当前发送的样本总数。
- 蓝色 :当前发送的所有样本的平均值。
- 红色 :当前标准偏差。
- 绿色 :吞吐率,表示服务器每分钟处理的求数
让我们在下图中分析一下Google服务器的性能。
要分析被测Web服务器的性能,应该关注两个参数
- 吞吐量
- 偏差
吞吐量是最重要的参数。它表示吞吐量越高,服务器性能越好。 在本次测试中,Google服务器的吞吐量为1491.193/分钟。该值相当高,因此我们可以得出结论,Google服务器具有良好的性能 偏差用红色表示-它表示与平均值的偏差。越小越好。
让我们将Google服务器的性能与其他Web服务器进行比较。这是网站http://www.yahoo.com/的性能测试结果(可以选择其他网站)
被测网站http://www.yahoo.com的吞吐量为867.326/分钟。这意味着该服务器每分钟处理867.326个求,低于谷歌。 偏差为2689,远高于谷歌(577) 。所以我们可以确定这个网站的性能低于谷歌服务器。
注意:上面的值取决于几个因素,比如Google当前的服务器负载,网速,CPU能力等等。所以不要惊慌!
故障排除:
如果在运行上述方案时遇到此问题.执行以下操作
- 检查是否通过代理连接到Internet。如果是,删除代理。
- 打开一个新的Jeter实例
- 在Jeter中打开PerformanceTestPlan.jmx
- 双击线程组->图形结果
- 运行测试