jmeter与长链接压测

jmeter是设计成作负载测试和性能评估的java应用。它可以测试的类型包括html

  • Web - HTTP,HTTPSjava

  • SOAP / REST 服务git

  • FTPgithub

  • 经过JDBC的数据库shell

  • LDAP数据库

  • 基于JMS的面向消息的中间件apache

  • 邮件 - SMTP(s),POP3(s)以及IMAP(s)bash

  • shell脚本服务器

  • TCP性能

  • java对象

如下以TCP为主

GUI界面简介

下载完jmeter以后,进入jmeter源码目录

⇒  ls
LICENSE        NOTICE         README.md      bin            docs           extras         lib            licenses       printable_docs
复制代码

在当前目录下执行命令 ./bin/jmeter即可以看到图形化的界面

jmeter概念

ThreadGroup

线程组是是全部测试计划的起点。一切的controller和sampler都必须在线程组下面,其它的元素,好比listener,可能直接放在了测试计划下面,这种状况下它就适用于全部的线程组。线程组控制着

  1. 线程的数量

  2. 线程所有启动的时间

  3. 执行测试的次数

Pre-Processor

在sampler请求以前执行,通常它用来修改设置或者更新一些变量

Samplers

用来发送请求给服务器,而且等待结果,Jmeter的sampler包括

  • FTP request

  • HTTP request

  • JDBC request

  • java object request

  • JMS request

  • JUnit Test request

  • Mail request

  • OS Process request

  • TCP request

Assertion

用来校验请求的返回结果

configuration

它会被添加到请求,或者是修改请求

Post-Processor

在sampler执行以后执行

logic controller

自定义jmeter在发送请求时的一些处理逻辑

Listener

用来获取jmeter运行时搜集的信息,好比 Graph Result listener用来绘制返回时间

Timer

在每一个sampler执行前,延迟一段时间执行

Properties

JMeter的Properties定义在了 jmeter.properties,它是全局的

variables

它对于每一个线程来讲都是本地的,若是在一个线程里面改变了,仅影响这个线程

Jmeter的scope

jmeter的测试结构既是分层的又是顺序的,一些元素是严格按照层次来的,好比(Listeners, Config Elements, Post-Processors, Pre-Processors, Assertions, Timers),一些是按照顺序来的,好比(controllers, samplers)

  1. 一个典型的按照顺序执行的测试树以下,它的请求顺序是 One Two Three Four。

  2. 受层次影响的测试树,Assertion #1 仅用于 One,而 Assertion #2则是用于 TWO和Three

  3. 加上timer以后, Timer #1 会用于 Two/Three/Four,Assertion # 1则仅会用于Three,而 Timer #2则会影响全部的请求

能够简要的理解成 子集功能只能给当和他同一级目录和他的子集使用,其它的是按照顺序执行

执行顺序说明

总的来看,执行顺序是

  1. Configuration elements

  2. Pre-Processors

  3. Timers

  4. Sampler

  5. Post-Processors (除非SampleResult 是 null)

  6. Assertions (除非SampleResult 是 null)

  7. Listeners (除非SampleResult 是 null)

好比如下的测试计划

  • Controller

    • Post-Processor 1

    • Sampler 1

    • Sampler 2

    • Timer 1

    • Assertion 1

    • Pre-Processor 1

    • Timer 2

    • Post-Processor 2

它的执行顺序就是

Pre-Processor 1
Timer 1
Timer 2
Sampler 1
Post-Processor 1
Post-Processor 2
Assertion 1

Pre-Processor 1
Timer 1
Timer 2
Sampler 2
Post-Processor 1
Post-Processor 2
Assertion 1
复制代码

图形界面

经过图形界面配置好的结果,保存下来后,能够再经过./bin/jmeter -t xxx.jmx的方式打开。

保存配置的方式为 找到应用目录 File -> save test plan as 便可

启动测试操做以下

中止测试操做以下

对于左侧栏也提供了展开和收起

线程组的界面以下

若是想经过非图形界面的方式启动,则可使用 ./bin/jmeter-server 来执行,远程测试能够经过添加 -Jremote_hosts 的方式来添加服务列表 远程测试详情戳这里

监控结果

若是须要测试完成后自动产生图形界面的结果,能够执行

./jmeter -n -t ~/Desktop/MyServerHandler.jmx -l ~/Desktop/MyServerHandlerLog.txt -e -o ~/Desktop/MyserverHandlerReport
复制代码
  • ~/Desktop/MyServerHandlerLog.txt是一个存储结果的空文件

  • ~/Desktop/MyserverHandlerReport 是一个存储监控结果的空

  • ~/Desktop/MyServerHandler.jmx 经过界面配置生成的压测计划

若是已经执行完了,日志放在了 MyServerHandlerLog.txt 中,能够经过命令直接产生

/bin/jmeter -g MyServerHandlerLog.txt -o ./MyserverHandlerReport
复制代码

能够在 bin/user.properties 文件定制相关的内容

jmeter体验测试案例

nettyServer长链接服务提供了简单的心跳和echo服务,经过启动配置好的jmx

就能够看到对应的界面,而后开始压测

附录

jmeter官方主页

jmeter的监控

jmeter的基本元素

相关文章
相关标签/搜索