簡體   English   中英

使用Mod_JK在JBoss服務器上測量請求處理時間

[英]Measuring Request processing time at JBoss server using Mod_JK

我的Web應用程序體系結構是:Apache 2(作為負載平衡器)+ JBoss 3.2.3 + MySQL 5.0.19。

我要:僅測量在JBoss服務器上花費的請求處理時間(針對每個單獨的請求)(即,不包括在Web和數據庫服務器上花費的時間)。

我一直在研究如何僅在應用程序層上記錄請求處理時間。 我發現* mod_JK日志記錄*,* Apache的mod_log_config *和Tomcat AccessLogValve是兩種可能的方法。

使用* mod_JK日志記錄*:我的理解mod_jk日志記錄為每個請求提供了請求處理時間,並根據請求離開Apache服務器的時間與Apache服務器收到相應響應的時間之間的時間差進行計算。 如果這不正確/正確,請糾正我。

使用Apache的mod_log_config模型( http://www.lifeenv.gov.sk/tomcat-docs/jk/config/apache.html ):通過在LogFormat(JKLogFile構造)構造中添加“%{JK_REQUEST_DURATION} n”(請參見以上鏈接)。 “ JK_REQUEST_DURATION”從Apache角度捕獲了Tomcat的總體處理時間。

時間(在上述情況下)包括Tomcat / JBoss + MySQL處理時間。 對於我來說,這無濟於事,因為它包括MySQL處理時間-我只想在JBoss上記錄請求處理時間。 有任何建議/想法嗎?

使用AccessLogValve :通過在AccessLogValve XML構造的pattern屬性中設置%D,可以記錄“以毫秒為單位的處理請求所花費的時間”。 目前還不清楚

  • 如果此時間是tomcat / JBoss服務請求所需要的時間(例如,分配線程工作程序來處理該時間)
  • 處理請求並將其發送到數據庫服務器所花費的時間(Tomcat / JBoss服務器上的總時間)
  • Tomcat / JBoss處理請求並將響應發送回Web服務器/客戶端花費的時間

有任何想法/線索嗎?

這是我想分享的經驗/研究。 如果有人遇到類似的問題/知道一種方法來分享他們的經驗/指標/想法,可以找到更好的解決方案,將不勝感激。

期待您的想法/建議

為什么要排除數據庫時間? 在數據庫上花費的時間就是您的應用程序正在等待的時間,與等待其他資源(例如,lucene索引完成,遠程http請求完成等)完全一樣。

如果您確實要排除數據庫訪問時間,則需要使用計時器啟動/停止指令來檢測應用程序。 這肯定需要進入您的應用程序內部(通過AOP“干凈”或通過應用程序關鍵點中的開始/停止語句手動進行),而不能僅僅是外界的配置(例如apache模塊)。

因此,您需要在處理鏈的最開始處收到請求時啟動計時器(此處的過濾器效果很好),並在每次發送查詢時停止。 然后恰好在查詢后重新開始。 當然,這不可能100%完成,尤其是在使用透明ORM(例如休眠)的情況下。 這是因為有時您可能會間接執行查詢,即通過純Java遍歷集合或關聯時。

我認為您正在尋找性能分析工具,例如java visualVM,JProfiler或其他..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM