準備工做:
- 安裝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
- 啓動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的屬性,具體見下圖:
![](http://static.javashuo.com/static/loading.gif)
-
- 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配置
![](http://static.javashuo.com/static/loading.gif)
- 如今,一個JMS PTP的採樣器已經配置完成,去設置一個線程開始跑起來吧,下面是一次運行後的結果
聚合報告:服務器
![](http://static.javashuo.com/static/loading.gif)
服務器資源佔用狀況:tcp
![](http://static.javashuo.com/static/loading.gif)
總結:
以上只是工具及插件的簡單使用,性能測試的重點不在這裏,後面會講分佈式測試來解決客戶端的瓶頸(網上也有教程,不過基本都是官方文檔的翻譯,有點很差理解)分佈式