zoukankan      html  css  js  c++  java
  • Jmeter_RabbitMQ性能测试

    【前言】

      RabbitMQ消息的传递并非使用HTTP协议,而是AMQP协议,因此除非开发暴露一个HTTP请求接口出来,否则无法直接使用HTTP请求发送json串数据,实现数据publish到MQ中。

    【测试方法】

      前提:有可视化的RabbitMQ管理页面;

      方法:利用Jmeter,录制RabbitMQ管理页面的publish message操作请求,在不经过上游调度系统的情况下将数据压入MQ中,供结算系统消费。

    RabbitMQ实例】

      (1)操作页面及流程

        操作页面:登录Rabbit,进入createDetailRecord的Queue页面;

        操作流程:

      (2)Json串的获取

        对于两个系统之间的消息传递,接收方在接收到消息后,一般会在日志里打印消息体,我们可以利用此,先从调度系统中手动推送一条消息到结算系统,然后查看结算系统的服务器实时日志,获取消息体。

        当然,对于接口测试,开发都会提供接口文档,但是对于有100+个字段的接口,若无json形式的接口文档,那接口字段变成测试可识别的文档尚需要一些时间。

        注:

        ①调度到运力结算的详单数据,是调度生成一条则推送一条,因此此处模拟的也是单条数据推送的json串格式;但是如果两个系统中推送消息的方式是:一次推送多条,则相应的json串格式也会随之调整,由对象变成对象数组,且一般会在尾部有数量的说明。

        ②有时,需要修改消费者方唯一性字段的值,例如某些自增长Id;

        从运力结算的服务器日志中,我们可以得知消息体的json格式串,如下所示:

      (3)Jmeter脚本准备

        ①录制:采用Jmeter代理录制的方式,录制上文“(1)操作页面及流程” 对应的操作即可;

        ②关于登录:RabbitMQ的登录认证采用HTTP基本认证,因此从登录请求(/api/whoami)中并不能直接找到用户名和密码,而是在该请求的HTTP信息头中的authorization字段,该字段值为: "用户名+冒号+明文密码"用BASE64算法加密后的字符串。在后续的资源请求中,都会携带该字段,用于用户身份标识。

        验证方法:http://www1.tc711.com/tool/BASE64.htm

     

        ③对请求的json字段进行参数化,即可对MQ及consumer进行压力测试。

        所遇问题1:CSV Data Set Config的Variable Names中声明参数 " OWNER_NAME ",但是在publish请求中将变量ownerName的值参数化为" ${owner_Name}",执行脚本时,服务器报JsonParseException异常,具体为: " Unrecognized token ‘$’ : was expecting"。

        解决方法1:在publish请求中将变量ownerName的值参数化为" ${OWNER_NAME}"。

        经验总结1:Jmeter的参数是大小写敏感的

     

        所遇问题2:服务器端中文显示乱码

        解决方法2:Jmeter→CSV Data Set Config→“File encoding”指定为“UTF-8”。

     

        所遇问题3:参数文件中,日期格式不正确,不正确格式形如:19-6月 -17 06.35.10.463000 下午。

        解决方法3:开发同学重新拉取生产数据,利用数据库操作将reg_date的格式修改为YYYY-MM-DD HH:MM:SS。

     

    4)本次测试结果

        压测使用的数据量:利用脚本不间断的向MQ中压入1w条数据,从第一条数据进入MQ到最后一条数据被运力结算consumer,共耗时1小时左右,consumer处理速度为3个/s左右,如下图所示;

     

  • 相关阅读:
    js实现base64转换
    使用maven命令终端构建一个web项目及发布该项目
    使用eclipse构建Maven项目及发布一个Maven项目
    Maven在Windows上的安装与配置
    centos7下安装配置redis3.0.4
    Centos7下完美安装并配置mysql5.6
    linux常用命令总结
    VMware下centos桥接模式静态ip配置
    解决centos7下tomcat启动正常,无法访问项目的问题
    centos7系统下安装配置jdk、tomcat教程
  • 原文地址:https://www.cnblogs.com/xpp142857/p/8457068.html
Copyright © 2011-2022 走看看