如何使用JProfiler進行應用性能分析?
1.楔子
jprofiler9.2是一款非常好用且功能強大的跨平臺java必能分析工具,使用它可以有效地對JAVA程序的CPU、內存使用情況進行監控行裝,同時還可以對JAVA程序的性能瓶頸進行分析。
主要功能
本地會話實時分析模式
遠程會話實時分析模式
離線分析模式
快照比較
查看HPROF快照
JDBC、JPA和NOSQL的數據庫分析
極好的支持JAVA企業版(JDBC,JPA/Hibernate,JMS和JNDI調用)
更高級別的分析數據(JDBC,JPA/Hibernate,JSP/Servlets,JMS,Web服務和JNDI,RMI調用,文件,套接字和進程的高級信息)
內存泄漏分析
強大的CPU分析器
2.安裝
建議大家安裝JProfiler9.2.1版本,網上的注冊碼大多都可以用,也可以實現遠端監控。在高的網上的版本注冊碼基本不能使用,會報如下的錯誤:
JProfiler> ERROR: Invalid license key. Aborting
安裝教程:jprofiler(Java性能分析工具) 下載安裝
3. 本地使用
最好在IDE中使用,方便快捷。也可直接通過GUI分析本地JVM進程。
IntelliJ IDEA集成JProfiler,入門教程
JProfiler性能分析工具詳解
4.監控遠程linux服務器的JVM進程
下面兩篇文章簡紹了使用jprofiler怎樣監控遠程linux的tomcat進程。
jProfiler遠程連接Linux監控tomcat運行狀態1
jProfiler遠程連接Linux監控tomcat運行狀態2
那么如何使用jprofiler監控其它的Java進程?下面將詳細介紹。
第一步:Linux上安裝jprofiler
下載軟件linux服務端jprofiler軟件,要與Windows Jprofiler的版本一致(jprofiler_linux_9_2_1.tar.gz):官網地址:http://www.ej-technologies.com/download/jprofiler/files ,下載好后把tar包上傳的linux服務器,解壓即可(tar -zxvf jprofiler_linux_9_2_1.tar.gz)。
第二步:遠程主機上運行了的/bin/jpenable代理,開啟一個特定的剖析端口
進入jprofiler的bin目錄,然后執行./jpenable啟動代理(JVMTI分析代理程序)。然后選擇要監控的jar包,選擇監控的端口,之后出現You can now use the JProfiler...代表運行成功,之后就可以使用Windows Jprofiler分析遠程JVM了。
第三步:JProfiler啟動遠程會話分析,監聽一個特定的剖析端口
配置遠程會話分析的IP和Port即可啟動遠程回話分析。
5.原理
1.JVMTI
JDK 本身定義了目標明確并功能完善的JNI( Java Native Interface )與虛擬機直接進行交互,這些 API 能很方便的進行擴展,從而滿足開發者各式的需求.
JVMTI( JVM Tool Interface),是JAVA虛擬機提供的本地接口,它是實現調度器以及其它Java運行測試與分析工具的基礎.
并不一定在所有的JDK提供商都有實現,但在主流的Oracle JDK、Open JDK上都有其實現.
在開發的過程中一般是使用Agent的方式來使用JVMTI,通過調用JVMTI的函數,從JVM中得到當前的運行信息.
2.JProfiler內部模型
3.JProfiler數據采集的原理
1.用戶在JProfiler GUI中下達監控命令( 對應用戶的一個點擊 ).
2.JProfiler GUI通過自身Socket的8849端口向位于JVM的JProfiler Agent發送監控指令.
3.JProfiler Agent收到指令后向JVMTI注冊事件或執行相關的命令.
4.JVMTI根據事件和命令的類型返回相對應的數據( 線程狀態、對象實例、CPU負荷、GC狀態信息等)
5.JProfiler Agent從JVMTI中得到相應數據后將對其進行計算,最終通過Socket傳輸給JProfiler GUI中進行展示.