前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jmeter与长连接压测

jmeter与长连接压测

作者头像
爬蜥
发布2019-08-20 09:23:24
3K0
发布2019-08-20 09:23:24
举报

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

  • Web - HTTP,HTTPS
  • SOAP / REST 服务
  • FTP
  • 通过JDBC的数据库
  • LDAP
  • 基于JMS的面向消息的中间件
  • 邮件 - SMTP(s),POP3(s)以及IMAP(s)
  • shell脚本
  • TCP
  • java对象

以下以TCP为主

GUI界面简介

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

代码语言:javascript
复制
⇒  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。
  1. 受层次影响的测试树,Assertion #1 仅用于 One,而 Assertion #2则是用于 TWO和Three
  1. 加上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

它的执行顺序就是

代码语言:javascript
复制
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 的方式来添加服务列表 远程测试详情戳这里

监控结果

如果需要测试完成后自动产生图形界面的结果,可以执行

代码语言:javascript
复制
./jmeter -n -t ~/Desktop/MyServerHandler.jmx -l ~/Desktop/MyServerHandlerLog.txt -e -o ~/Desktop/MyserverHandlerReport
  • ~/Desktop/MyServerHandlerLog.txt是一个存储结果的空文件
  • ~/Desktop/MyserverHandlerReport 是一个存储监控结果的空
  • ~/Desktop/MyServerHandler.jmx 通过界面配置生成的压测计划

如果已经执行完了,日志放在了 MyServerHandlerLog.txt 中,可以通过命令直接产生

代码语言:javascript
复制
~/Documents/workMeiTuan/jmeter-server/bin/jmeter -g MyServerHandlerLog.txt -o ./MyserverHandlerReport

可以在 bin/user.properties 文件定制相关的内容

jmeter体验测试案例

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

就可以看到对应的界面,然后开始压测

附录

jmeter官方主页

jmeter的监控

jmeter的基本元素

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年08月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GUI界面简介
  • jmeter概念
    • ThreadGroup
      • Pre-Processor
        • Samplers
          • Assertion
            • configuration
              • Post-Processor
                • logic controller
                  • Listener
                    • Timer
                      • Properties
                        • variables
                        • Jmeter的scope
                        • 执行顺序说明
                        • 图形界面
                        • 监控结果
                        • jmeter体验测试案例
                        • 附录
                        相关产品与服务
                        消息队列 TDMQ
                        消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档