2011-05-24 156 views
2

我使用多個負載測試工具(Loadrunner,JMeter,NeoLoad)來測試不同的應用程序。我想知道是否有可能監視應用程序堆棧的所有層,例如。假設我有以下數據鏈。性能監控系統的所有層

負載均衡< -X->應用程序服務器< -X-> RMI < -X-> Java應用程序< -X-> MQ < -X->遺留應用程序< -X->數據庫

我在哪裏在我有興趣監測的鏈中標記了x,例如平均響應時間。

顯然,我們可以簡單地創建這將收集的統計數據爲我們所有端點的包裝,也許我們可以把它導入到LoadRunner的或其他loadtesting工具和副業下襬的工具內置的性能統計數據,但也許有工具/應用哪個已經這樣做?

如果不是,我們應該如何進行,以便收集這種統計數據?

回答

2

這個標準應該是Application Response Measurement (ARM)。這是一組跨語言的API,只是做你正在尋找的東西。問題在於實現這個規範的產品往往都是大而昂貴的「企業」級監控工具。考慮多周的安裝,顧問,更多的基礎設施和大量流行語。

不過,如果這是一個任務關鍵型預算的關鍵任務應用程序,這可能是您需要的。但是你可以在沒有太多努力的情況下建立自己的團隊。如果您仍然想使用該API,快速搜索至少會出現一個open source ARM implementation

另一種選擇是簡單地讓您可以針對系統的每一層運行事務來檢查一般響應性。例如,您可以在LB上有一個靜態網頁,在應用程序服務器上沒有任何操作,在Java應用程序上有一個「hello」servlet,將消息直接放在隊列中,等等。在性能/負載測試期間,這些可以直接由負載測試工具命中,也可以編寫一個包裝servlet /應用程序調用,將其作爲單個HTTP(RMI?)調用執行。每分鐘運行這幾次不會給系統增加太多的負載,但它應該可以幫助您確定哪一層速度較慢。這種方法的好處在於它也可以在生產環境中工作,只需要注意安全問題。對於單用戶類型的測試,如果你知道你有問題(例如,這個tx是「慢」),我也有很好的網絡跟蹤運氣。這是非常乏味的,但是當你不確定什麼層是緩慢的,在幾臺機器上啓動一個網絡跟蹤並運行一個tx時,通常可以很好地瞭解系統正在做什麼。

1

我在過去處理過這種分解的一些方法。第一種方法使用協議分析器轉儲的數據來查找對話離開X層並進入Y層的時間點。第二種方法是通過對各層進行日誌審查。在這種情況下,可以使你的檢查非常有用的東西是所有組件(syslog,Rsyslog等)的常用日誌服務器和一個不錯的日誌解析工具,例如免費提供的Microsoft Logparser。對數據庫中存儲的應用程序使用審計線索的第三種方法。在使用具有消費者/生產者模型和總線來傳遞信息而不是直接連接的企業服務總線型應用程序時,您可能會發現這一點。我所看到的審計跟蹤通常存儲在數據庫中,並允許通過整個應用程序基礎架構跟蹤單個事務。您的負載均衡器作爲網絡設備,可能在這一次沒有找到。

請注意,如果您使用協議分析器或日誌路由,請確保將所有源信息設備同步到通用時間服務器。當你進入分析階段時,讓你的收藏家之一(分析器,應用程序日誌)在時間戳的基礎上真的可以成爲頭髮拉動經驗。

至於如何從收集的數據轉移到LoadRunner中,那部分是非常機械的。分析程序支持導入外部數據點的界面。格式非常具體,並在幫助和在線文檔中有記錄。此導入過程非常順利,因爲我經常不得不使用它來從主機收集統計信息,這些統計信息不具有直接監視訪問權限,但需要將其作爲受監視測試基礎結構的一部分。

詹姆斯滑輪

主持人(YahooGroups LoadRunner的,高級 - LoadRunner的; Google網上論壇LR-LoadRunner的; LinkedIn LoadRunner的,LoadRunnerByTheHour; SQAForums LoadRunner的,WinRunner的)