使用Jmeter压测ActiveMQ

准备工做:

  • 安装JDK,推荐使用1.7以上版本,并设置JAVA_HOME
  • 下载Jmeter及相关插件:Jmeter下载地址点我插件下载地址点我ActiveMQ下载地址点我
  •  插件安装:
    • 分别解压前两个插件,将解压后文件夹中lib\ext目录下的JmeterPlugins-Standard.jar和JmeterPlugins-Extras.jar拷贝到刚JMETER_HOME\lib\ext目录下
    • 解压ServerAgent-2.2.1.zip
  • 针对JMS类型的Sampler,须要额外的jar包(我这里用的是apache ActiveMQ,将下载的AMQ apache-activemq-5.11.1根目录下的activemq-all-5.11.1.jar拷贝到JMETER_HOME\lib目录下)
  • 启动ActiveMQ:打开dos窗口,进入ActiveMQ解压目录下的bin目录,输入命令:activemq.bat start
    • Tips:在启动ActiveMQ前,修改conf目录下的activemq.xml中的配置
      <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=65535&amp;wireFormat.maxFrameSize=104857600"/>

      上面标记的这个数字为最大链接数,本身设置,若是过小的话会致使发送的请求都被拒绝html

  • 启动ServerAgent:进入刚才解压的目录,以管理员身份运行startAgent.bat

  哈哈,有木有以为很麻烦,有点不耐烦了呢?至此,全部的准备工做已经就绪,下面开始使用Jmeter。apache

建立JMS P2P请求:

  • 启动Jmeter:进入JMETER_HOME\bin目录,以管理员身份运行Jmeter.bat,此时会启动两个窗口,一个是dos窗口(请勿关闭此窗口),另外一个是Jmeter的GUI界面
  • 添加一个线程组
  • 添加Samper:选择JMS POINT TO POINT
  • 配置Sampler,这一块才是重点,由于要用到JNDI,以前网上看了些文章,都是直接修改ApacheJMeter_core.jar中的jemeter.properties文件,这种方式比较麻烦,涉及从新打包,这里我就直接在Jmeter GUI中配置JNDI的属性,具体见下图:

    • QueueConnection Factory:链接名
    • JNDI name Request queue:JNDI请求发送队列名
    • JNDI name Recieve queue:JNDI接收队列
    • TimeOut:超时时长
    • Expiration:过时时间
    • Communication style:Request only(只发送请求,若是选择Request Response模式,须要设置CorrelationId,而且须要服务端调用getReplyTo()方法来监听请求,这个一直没调通,回头再研究看看能不能经过本身写代码实现)
    • Content:发送消息内容,这里调用Jmeter的函数助手发送512个字符
    • Initial Context Factory:org.apache.activemq.jndi.ActiveMQInitialContextFactory(这个在以前从AMQ中拷贝到Jmeter\lib中的jar包里,Jmeter会自动扫描到)
    • JNDI Properties,queue.Test.Request和queue.Test.Reply,这里定义前面用到的两个变量
    • Provider URL:tcp://localhost:61616,这个是消息服务器的ip和端口,我这里用的本地的
  • 下面就是添加监听器了,添加一个聚合报告,而后再添加一个jp@gc - PerfMon Metrics Collector监听器,其它的监听器及配置元件根据本身的实际须要来添加,这里贴一个PerfMon Metrics Collector配置

  • 如今,一个JMS PTP的采样器已经配置完成,去设置一个线程开始跑起来吧,下面是一次运行后的结果

聚合报告:服务器

服务器资源占用状况:tcp

 

总结:

以上只是工具及插件的简单使用,性能测试的重点不在这里,后面会讲分布式测试来解决客户端的瓶颈(网上也有教程,不过基本都是官方文档的翻译,有点很差理解)分布式

相关文章
相关标签/搜索