创建一个简单的测试计划(test plan)
启动JMeter后,有一个默认的测试计划,但这个测试计划并没有任何内容,我们要为测试计划添加线程组,然后在线程组下面添加HTTP请求默认值、HTTP Cookie 管理器、HTTP请求等内容。
添加线程组
右击 test plan,选择添加 Threads (Users) 线程组
线程组有3个重要的属性需要我们来指定。线程数就是JMeter模拟用户的数量,每一个线程就是一个模拟用户。Ramp-Up Period是从第一个用户发出第一个请求到最后一个用户发出第一个请求所花费的时间。循环次数是每个用户所发出的请求数。
为线程组添加HTTP请求默认值
右击“线程组”>>“添加”>>“配置元件”>>“HTTP请求默认值”
在HTTP请求默认值的web服务器部分,填入服务器名称或IP。注意,如果你填写的是服务器名称,那么不要在前面加http://,JMeter会自动加上http://。
添加HTTP cookie管理器
右击“线程组”,选择“添加”>>“配置元件”>>“HTTP Cookie 管理器”
添加HTTP请求
右击”线程组“,选择”添加“>>”Sampler“>>”HTTP请求”
在HTTP请求中,将路径指定为/,这样JMeter的所有用户便会对服务器主页发出请求。在这里,你可以不指定服务器名称或IP,因为在HTTP请求默认值当中已经指定了。
添加一个监听器
在JMeter中,监听器是用来输出测试结果的,我们可以右击”线程组”,选择”添加”>>”监听器”>>”用表格察看结果”,这样结果会以表格的形式输出。
经过上面的步骤,我们就创建好了一个测试计划。
执行测试计划
首先,保存这个测试计划以便将来使用。在菜单栏中选择“文件”>>“保存测试计划为”来保存。然后在左侧窗口中单击“用表格察看结果”,再单击菜单工具栏的启动按钮以开始测试。
在右侧窗口可以看见测试结果。
对测试结果的解释
首先我们看到绿色的三角形,这表示请求得到回复。然后我们关心的两列数据是Sample Time (样本时间)和 latency(延迟)。样本时间和延迟都是以毫秒(ms)为单位。1000 milliseconds = 1 second,一毫秒等于一秒的千分之一。
- 延迟:数据在用户和服务器之间发送所需要的时间,包括请求到达服务器的时间和回复到达用户的时间。
- 样本时间:在这里样本时间是指服务器的响应时间加上延迟,响应时间是指服务器收到请求后到发出回复所花费的时间。每一次请求就是一个样本。
从上图可以看出,样本时间最低也有3秒,而延迟大多数在1秒以下,说明在这种情况下,服务器响应时间太长,也就是说服务器的处理请求的效率太低。
在服务器上使用top命令来查看CPU和内存使用率
当服务器没有收到请求时,top命令显示如下,你会看到%Cpu(s)的使用情况为 us (User Usage)基本上接近0,而 id (idle)接近100%,也就是说CPU基本上处于空闲状态。
当我们用JMeter对服务器进行测试的时候,top命令输出结果如下。这时%Cpu(s) 中 us 接近100%,而 id接近0,同时我们也可以看到内存还很充足。说明性能瓶颈在CPU。
而在下图中观察进程可以发现,php5-fpm进程占用了大量CPU。