使用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

 

總結:

以上只是工具及插件的簡單使用,性能測試的重點不在這裏,後面會講分佈式測試來解決客戶端的瓶頸(網上也有教程,不過基本都是官方文檔的翻譯,有點很差理解)分佈式

相關文章
相關標籤/搜索