jms 如何测试_使用JMSTester对JMS层进行基准测试
jms 如何測試
對于我去過的大多數(shù)客戶端,使用ActiveMQ擴展JMS消息傳遞層是一個優(yōu)先事項。 有多種方法可以實現(xiàn)這一目標,但毫無疑問,創(chuàng)建基準并分析實際硬件上的體系結構(或者正如我的同事Gary Tully所說的“詢問機器”)是第一步。 但是,對于創(chuàng)建一套全面的基準測試,您有哪些開源選擇?如果您有一些好的經(jīng)驗,請在評論中讓我知道。 我能想到的項目:
- 阿帕奇Jmeter
- ActiveMQ性能插件
- FuseSource JMSTester
- Hiram Chirino的jms基準
在與Gary談談為ActiveMQ設置測試方案時,他回憶起一個非常有趣的項目,似乎停滯在名為JMSTester的FuseSource Forge 存儲庫中 。 他建議我看看它。 我做到了,它的當前功能給我留下了深刻的印象。 它是由前FuseSource顧問Andres Gies創(chuàng)建的,它通過與客戶,航班和業(yè)余時間黑客的多次迭代而創(chuàng)建。 從那以后,我將接管它,并且我將添加功能,測試,文檔,并繼續(xù)保持它曾經(jīng)擁有的動力。
但是,即使在我無法發(fā)揮自己的創(chuàng)造力之前,我也想與您分享它目前擁有的力量。
目的
該博客文章的目的是對JMSTester工具進行類似教程的介紹。 該工具的目的是提供一個功能強大的基準框架,以創(chuàng)建靈活的分布式JMS測試,同時在進行調(diào)整和調(diào)整JMS層之前監(jiān)視/記錄對現(xiàn)有數(shù)據(jù)至關重要的統(tǒng)計信息。
JMSTester主頁上的某些文檔有些過時,但是描述某些基準的步驟仍然是準確的。 本教程將要求您下載我一直在努力的SNAPSHOT,該文件可在以下位置找到: jmstester-1.1-20120904.213157-5-bin.tar.gz 。 我將很快部署網(wǎng)站的下一個版本,該網(wǎng)站應具有更多的二進制更新版本。 當我這樣做時,我將更新這篇文章。
符合JMSTester工具
JMSTester工具只是發(fā)送和接收JMS消息的工具。 您可以使用spring上下文配置文件中定義的配置文件來指定要對消息代理施加什么樣的負載。 JMSTester允許您定義想要使用的生產(chǎn)者的數(shù)量,使用者的數(shù)量,連接工廠,JMS屬性(事務,會話ack等)等。但是,最酷的部分是可以運行分布在許多計算機上的基準測試。 這意味著您將機器設置為專門充當生產(chǎn)者,并設置其他機器充當消費者。 至于監(jiān)視和收集用于基準測試的統(tǒng)計信息,JMSTester捕獲三種不同類別的信息:
他們的Hyperic SIGAR庫用于捕獲計算機級別的統(tǒng)計信息(第3組),而RRD4J庫用于記錄統(tǒng)計信息和輸出圖形。 目前,我認為這些圖表非常基礎,希望對此進行改進,但是原始數(shù)據(jù)始終會轉儲到csv文件中,您可以使用自己喜歡的電子表格軟件來創(chuàng)建自己的圖表。
建筑
JMSTester工具由以下概念組成:
- 控制者
- 客戶群
- 錄音機
- 前端
- 基準配置
控制者
控制器是基準的組織者。 它跟蹤誰對基準命令感興趣,啟動測試,跟蹤使用者數(shù)量,生產(chǎn)者數(shù)量等。基準在沒有控制器的情況下無法運行。 對于您感興趣的人,JMSTester工具的基礎體系結構依賴于消息傳遞,而ActiveMQ是控制器啟動的代理,以使其余體系結構正常工作。
客戶群
客戶端是接受命令的容器,可以模擬生產(chǎn)者 , 消費者或兩者的角色,或兩者都不起作用(這在以后很有意義)。 您可以根據(jù)需要擁有任意數(shù)量的客戶。 您可以給它們指定唯一的名稱,并在基準配置文件中使用它們的名稱。 客戶端可以在任何地方運行,包括在單獨的計算機上或全部在一臺計算機上運行。
錄音機
客戶端分別記錄統(tǒng)計信息并將數(shù)據(jù)發(fā)送到記錄器。 記錄器最終將統(tǒng)計信息整理好,并整理圖表,RRD4J數(shù)據(jù)庫和基準csv文件。
前端
前端向控制器發(fā)送命令。 現(xiàn)在只有一個命令行前端,但我的意圖是包括一個基于Web的前端和一個基于REST的控制器,該控制器可用于運行基準測試。
基準配置
配置文件是Spring上下文文件,用于指定指示控制器和客戶端如何運行基準測試的bean。 在這些配置文件中,您還可以指定要捕獲的度量標準以及何時將消息加載類型發(fā)送給JMS代理。 展望未來,我的目標是改善這些配置文件,包括添加自定義名稱空間支持以使配置不再那么冗長。
我們走吧!
JMSTester網(wǎng)站上有一些很好的入門教程:
- 簡單:http://jmstester.fusesource.org/documentation/manual/TutorialSimple.html
- JMX探針:http://jmstester.fusesource.org/documentation/manual/TutorialProbes.html
- 分布式:http://jmstester.fusesource.org/documentation/manual/TutorialDistributed.html
它們大多是最新的,但是當我發(fā)現(xiàn)錯誤時,我將繼續(xù)對其進行更新。
關于分布式教程的唯一一件事,實際上并沒有建立分布式示例。 它分離出客戶端,但僅在同一臺本地主機上。 只需設置幾個其他參數(shù)即可分發(fā)它,我們將在這里介紹。
本教程的體系結構如下:
讓我們真正快速地理解該圖。
JMS主機將運行兩個進程:我們將測試的ActiveMQ代理,以及名為Monitor的JMSTester客戶端容器。 容器既不是生產(chǎn)者也不是容器,而是僅用于監(jiān)視機器和JMX統(tǒng)計信息。 統(tǒng)計信息將被發(fā)送回控制器主機上的記錄器,如上面“記錄器”部分所述。 Producer和Consumer容器將在分別命名為Producer和Consumer的單獨機器上運行。 最后, Controller主機將具有分布式測試的Controller和Recorder組件。
最初設定
在將要參與基準測試的每臺計算機上下載并提取JMSTester二進制文件。
啟動Controller和Recorder容器
在將承載控制器的機器上,導航至$ JMSTESTER_HOME目錄,然后鍵入以下命令以啟動控制器和記錄器:
./bin/runBenchmark -controller -recorder -springConfigLocations conf/testScripts 請注意,所有內(nèi)容都必須與上面完全一樣鍵入,包括“ conf / testScripts”上沒有尾隨空格
在以后的增強中,我將緩解這種特殊性。
啟動控制器和記錄器后,就應該準備啟動其余的客戶端了。 控制器啟動客戶端最終將連接到的嵌入式代理。
啟動生產(chǎn)者容器
在將托管生產(chǎn)者的機器上,導航至$ JMSTESTER_HOME目錄,然后鍵入以下命令:
./bin/runBenchmark -clientNames Producer -hostname domU-12-31-39-16-41-05.compute-1.internal對于-hostname參數(shù),必須指定啟動控制器的主機名。 我在上面使用的是Amazon EC2 ,如果您要這樣做,則更愿意為主機使用內(nèi)部DNS名稱。
啟動使用者容器
對于使用者容器,除了為其提供客戶名稱“ Consumer”外,您將執(zhí)行與生產(chǎn)者相同的操作
./bin/runBenchmark -clientNames Consumer -hostname domU-12-31-39-16-41-05.compute-1.internal 同樣, -hostname參數(shù)應反映正在運行控制器的主機。
在JMS主機上設置ActiveMQ和監(jiān)視器
設置ActiveMQ不在本文討論范圍之內(nèi)。
但是您將需要在代理上啟用JMX。 只需按照 Apache ActiveMQ網(wǎng)站上的說明進行操作即可 。
下一部分對于允許機器級別的探測/監(jiān)視是必需的。 您需要安裝SIGAR庫。 由于它們的許可證,它們不隨JMSTester一起分發(fā),并且它們的JNI庫在Maven中不可用。 基本上,您所需要做的就是下載并從此處提取[SIGAR發(fā)行版] [sigar-distro],然后將所有庫從$SIGAR_HOME/sigar-bin/lib文件夾復制到$ JMSTESTER_HOME / lib文件夾中。
現(xiàn)在,使用針對生產(chǎn)者和消費者的類似命令啟動Monitor容器:<
./bin/runBenchmark -clientNames Monitor -hostname domU-12-31-39-16-41-05.compute-1.internal提交教程測試用例
我們可以從任何計算機上提交測試用例。 我選擇從本地計算機上執(zhí)行此操作。 您會注意到,提交測試用例的計算機未從上方的圖中反映出來; 這僅僅是因為我們可以在任何機器上做到。 就像其他命令一樣,您仍然需要JMSTester二進制文件。
在運行測試之前,讓我們快速看一下指定測試的Spring配置文件。 為此,請在您喜歡的文本編輯器中打開$ JMSTESTER_HOME / conf / testScripts / tutorial / benchmark.xml,最好使用一種對XML文檔進行顏色編碼的代碼,以便于閱讀。 該基準文件帶有大量注釋,這些注釋清楚地描述了各個部分。 如果不清楚,請ping我,以便我提供更多詳細信息。
在配置中有幾個地方,您需要指定自己的值以使此測試成功。 不幸的是,目前這是一個手動過程,但我計劃對其進行修復。
看一下JMS代理連接工廠的創(chuàng)建位置。 在這種情況下,將在其中創(chuàng)建ActiveMQ連接工廠(第120和124行)。此處的URL是您在前面的部分之一中啟動的ActiveMQ代理的URL。 分發(fā)后,其中就有一個EC2主機URL。 您必須指定自己的主機。 同樣,如果使用EC2,則首選內(nèi)部DNS名稱。
然后,看一下指定AMQDestinationProbe的第169行。 該探針是針對ActiveMQ的JMX探針。 您必須更改brokerName屬性以匹配啟動它時命名的代理(通常在代理配置的<broker brokerName='name here'>部分中找到)。
最后,從$ JMSTESTER_HOME目錄中,運行以下命令:
./bin/runCommand -command submit:conf/testScripts/tutorial -hostname ec2-107-21-69-197.compute-1.amazonaws.com 同樣,請注意,我將-hostname參數(shù)設置為運行控制器的主機。 在這種情況下,我們更喜歡EC2的公共DNS,但這將取決于您的環(huán)境。
輸出量
你有它。 您已將測試用例提交給基準框架。 您應該在每個客戶端(生產(chǎn)者,消費者,監(jiān)視器)以及控制器上看到一些活動。 如果您的測試正常運行,并且所有原始數(shù)據(jù)和圖形均已生成,那么您應該會看到類似于日志記錄輸出的內(nèi)容:
Written probe Values to : /home/ec2-user/dev/jmstester-1.1-SNAPSHOT/tutorialBenchmark/benchmark.csv請注意,所有結果都寫入到tutorialBenchmark中 ,該名稱是測試的名稱,該名稱由第18行的Spring配置文件中的BenchmarkId定義:
<property name='benchmarkId' value='tutorialBenchmark'/>如果您看一看benchmark.csv文件,您將看到收集到的所有統(tǒng)計信息。 收集的本教程的統(tǒng)計信息包括:
- 郵件數(shù)
- 訊息大小
- JMX隊列大小
- JMX線程計數(shù)
- SIGAR CpuMonitor
- SIGAR免費系統(tǒng)內(nèi)存
- SIGAR系統(tǒng)總內(nèi)存
- SIGAR免費交換
- SIGAR總掉期
- SIGAR交換頁面
- SIGAR換頁
- SIGAR磁盤讀取(以字節(jié)為單位)
- SIGAR磁盤寫入(以字節(jié)為單位)
- SIGAR磁盤讀取
- SGIAR磁盤寫入
- SIGAR Network RX BYTES
- SIGAR Network RX PACKETS
- SIGAR Network TX BYTES
- SIGAR Network RX已刪除
- SiGAR Network TX已刪除
- SIGAR Network RX錯誤
- SIGAR Network TX錯誤
而已
我強烈建議您看一下這個項目。 我已經(jīng)接手了它,并且會在時間允許的情況下對其進行改進,但是我非常重視關于如何改進它或支持哪些用例的任何想法或建議。 看一下已有的文檔,我們將繼續(xù)添加更多文檔。
如果您有問題,或者如上所述無法正常運行,請給我發(fā)評論,發(fā)電子郵件或在Apache IRC頻道中找到我……我通常至少在#activemq和#camel中。
祝您編程愉快,別忘了分享!
參考:在Christian Posta Software博客上,使用來自我們JCG合作伙伴 Christian Posta的FuseSource提供的開源JMSTester工具對JMS層進行基準測試 。
翻譯自: https://www.javacodegeeks.com/2012/09/benchmarking-jms-layer-with-jmstester.html
jms 如何測試
總結
以上是生活随笔為你收集整理的jms 如何测试_使用JMSTester对JMS层进行基准测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑拳皇出招表大全大蛇(拳皇大蛇技能出招
- 下一篇: 零基础如何入门学习电脑编程零基础如何学电