在Java-web-app中搜索性能問題時,我想通過抽樣(通過抽樣)來分析單個Web會話。 Web應用程序部署在Java EE應用程序服務器(JBoss或WLS,因此沒有可能的OpenJDK特定的東西)分析單個Web會話
使用像JVisualVM或YourKit的傳統採樣器將只允許我一次剖析所有正在運行的線程因此不會顯示與已經在服務器上的基本負載分離的所述web會話的CPU使用率。部分問題是,Web會話和單個線程之間(顯然)沒有技術上的聯繫,即每個請求都可能從應用程序服務器的線程池中獲取不同的線程。
我的想法是實現一個採樣器,並在每次從服務器收到新請求時註冊與觀察到的Web會話關聯的線程(一旦請求完成,就取消註冊線程)。
第一個問題:您是否需要手動執行此操作,或者是否有可用的工具來執行此操作?
第二個問題(因爲我沒有發現,並假設這是一個相當具體的問題):什麼是最好的方法?
顯然,人們會盡量減少配置文件對應用程序性能的影響。顯然,因爲我需要將(技術)線程信息連接到特定於應用程序的數據(websession-ID),所以這看起來不算什麼,可以通過JVMTI完成。
留下了對應用程序分析器進行編碼的選項,其中一個線程正在通過Thread.stackTrace或ThreadMXBean.getThreadInfo進行採樣。哪個更好?還有其他更好的選擇嗎?
雖然特別messadmin可能是一個工具,它可以幫助我在我現在面臨一個問題,乍一看這兩款產品功能與性能分析(在抽樣的培訓就業處)上的Web會話級的應用。我錯過了什麼嗎? – Jonathan