java的jvm調優相關工具——jvm調優、GC、壓測、linux命令

jmap

jdk自帶命令。jmap是一個多功能的命令,查看JVM內存使用情況。它可以生成 java 程序的 dump 文件, 也可以查看堆內對象示例的統計信息、查看 ClassLoader 的信息以及 finalizer 隊列。

jmap -dump:live,format=b,file=myjmapfile.txt 19570

jstack

jdk自帶命令。查看運行java程序的java stack和native stack的信息。

jstack pid

jstat

jdk自帶命令。可以觀察到classloader,compiler,gc相關信息。可以時時監控資源和性能 。

MAT

第三方堆棧文件分析工具。下載地址:https://www.eclipse.org/mat/

jps

jdk自帶命令。查看JVM中運行的進程狀態信息。

jps [options] [hostid]

jhat

jdk內置的工具之一。主要是用來分析java堆的命令。,可以將堆中的對象以html的形式顯示出來,包括對象的數量,大小等等,並支持對象查詢語言。使用jmap等方法生成java的堆文件後,使用其進行分析。

jinfo

輸出jvm各項參數信息,包括默認參數

Jinfo [option] pid

jstatd

虛擬機的jstat守護進程,主要用於監控JVM的創建與終止,並提供一個接口允許遠程監控工具依附到在本地主機上運行的JVM。 jstatd工具是一個RMI服務器應用程序,主要用於監控HotSpot Java 虛擬機的創建與終止,並提供一個接口以允許遠程監控工具附加到本地主機上運行的JVM上。jstatd位於 $JAVA_HOME/bin目錄下 jstatd服務器需要在本地主機上存在一個RMI註冊表。

jdb

jdk自帶工具。 JDB是 The Java Debugger 的簡稱,它可以在命令行下調試Java程序。在JDK自己的bin目錄下。

hprof

JDK自帶一個簡單的性能分析工具。常被用於內存使用情況分析。它是一個動態鏈接庫文件,監控CPU的1使用率、內存堆棧分配情況等。使用命令行格式爲:

java -Xrunhprof ToBeProfiledClass

有兩種分析方法:內存分配歷史的跟蹤記錄(dump)和將佔用內存的對象進行排序(sites)。

命令行如下:

java -Xrunhprof:heap=all|dump|sites ToBeProfiledClass

Java VisualVMjvisualvm

即jvisualvm,Netbeans的profile子項目,已在JDK6.0 update 7 中自帶,能夠監控線程,內存情況,查看方法的CPU時間和內存中的對 象,已被GC的對象,反向查看分配的堆棧。Jvisualvm動態分析jvm內存情況和gc情況,插件:visualGC.

在JDK_HOME/bin(默認是C:\Program Files\Java\jdk1.6.0_13\bin)目錄下面,有一個jvisualvm.exe文件,雙擊打開。啓動起來後和jconsole 一樣同樣可以選擇本地和遠程,如果需要監控遠程同樣需要配置相關參數。

ab 、abs

ab是apache 推出的壓力測試工具,可以用來測試http服務器的性能,得出QPS。全稱:Apache HTTP server benchmarking tool

abs 則是apache 推出的壓力測試工具,可以用來測試https服務器的性能,得出QPS

工具下載地址:https://www.apachehaus.com/cgi-bin/download.plx

工具官方文檔地址:http://httpd.apache.org/docs/2.4/programs/ab.html

用法簡介:下載工具進入Apache24/bin目錄下載就可以看到ab.exe和abs.exe 在命令行中輸入

ab -n 1000 -c 20 http://127.0.0.1:8080/

-n 要發多少個請求數 -c 每次進行多少請求 注意:必須是 http://127.0.0.1:8080/ ,“/” 不可以被省略,測試地址必須是一個url。

jconsole

jdk自帶命令。可視化監控jvm

gc log

gc時打印出來的日誌。

在jvm啓動參數加上以下,可以開啓gc log,配置gclog的輸出位置

-XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:/usr/local/project/jvmtest/gc.log

jcmd

在JDK1.7以後新增的一個命令行工具。可以用它來導出堆、查看Java進程、導出線程信息、執行GC、還可以進行採樣分析(jmc 工具的飛行記錄器)。

GCViewer

日誌可視化分析工具。

下載地址:http://www.tagtraum.com/gcviewer.html

GCHisto

日誌分析工具。

下載:http://java.net/projects/gchisto

直接點擊gchisto.jar就可以運行,點add載入gc.log

GCLogViewer

日誌分析工具。

下載:http://code.google.com/p/gclogviewer/

點擊run.bat運行 整個過程gc情況的趨勢圖,還顯示了gc類型,吞吐量,平均gc頻率,內存變化趨勢等 Tools裏還能比較不同gc日誌

HPjmeter

日誌分析工具。

下載地址: http://www.hp.com/go/java

工具很強大,但只能打開由以下參數生成的GC log, -verbose:gc -Xloggc:gc.log,添加其他參數生成的gc.log無法打開。

garbagecat

日誌分析工具。

http://code.google.com/a/eclipselabs.org/p/garbagecat/wiki/Documentation

Jprofiler

JProfiler是由ej-technologies GmbH公司開發的一款性能瓶頸分析工具.

下載:https://www.ej-technologies.com/products/jprofiler/overview.html

GCeasy

一款超好用的在線分析GC日誌的網站

網址:https://www.gceasy.io/

jpda

java遠程調試工具。JPDA(Java Platform Debugger Architecture)是Java平臺調試體系結構的縮寫。由3個規範組成,分別是JVMTI(JVM Tool Interface),JDWP(Java Debug Wire Protocol),JDI(Java Debug Interface) 。

top

linux命令。實時顯示正在執行進程的 CPU 使用率、內存使用率以及系統負載等信息。

top Hp pid

查看具體線程使用系統資源情況

vmstat

linux命令。監測指定採樣週期和次數。它不僅可以統計內存的使用情況,還可以觀測到 CPU 的使用率、swap 的使用情況。但 vmstat 一般很少用來查看內存的使用情況,而是經常被用來觀察進程的上下文切換。Virtual Meomory Statistics(虛擬內存統計)的縮寫,可對操作系統的虛擬內存、進程、CPU活動進行監控。

pidstat

linux命令。pidstat是 Sysstat 中的一個組件;可以通過yum install sysstat 安裝該監控組件。pidstat 命令則是深入到線程級別的監測工具。

gdb

linux命令。是一個由GNU開源組織發佈的、UNIX/LINUX操作系統下的、基於命令行的、功能強大的程序調試工具。

nmon

Linux工具。很輕鬆的監控Linux系統的 CPU、內存、網絡、硬盤、文件系統、NFS、高耗進程、資源和 IBM Power 系統的微分區的信息)。

下載:http://nmon.sourceforge.net/pmwiki.php?n=Site.Downlo

JMeter

Apache JMeter爲一款廣爲流傳的開源壓測產品,最初被設計用於Web應用測試,如今JMeter可以用於測試靜態和動態資源,例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、數據庫、FTP服務器等等,還能對服務器、網絡或對象模擬巨大的負載,通過不同壓力類別測試它們的強度和分析整體性能。另外,JMeter能夠對應用程序做功能測試和迴歸測試,通過創建帶有斷言的腳本來驗證你的程序返回了你期望的結果。爲了最大限度的靈活性,JMeter允許使用正則表達式創建斷言。 JMeter的特點包括對HTTP、FTP服務器、數據庫進行壓力測試和性能測試;完全的可移植性;完全 Swing和輕量組件支持包;完全多線程;緩存和離線分析/回放測試結果;可鏈接的取樣器;具有提供動態輸入到測試的功能;支持腳本編程的取樣器等。在設計階段,JMeter能夠充當HTTP PROXY(代理)來記錄瀏覽器的HTTP請求,也可以記錄Apache等WebServer的log文件來重現HTTP流量,並在測試運行時以此爲依據設置重複次數和併發度(線程數)來進行壓測。

類似的壓測工具還有:LoadRunner、NeoLoad、WebLOAD、Loadster、Load impact、CloudTest、Loadstorm、阿里雲PTS、壓測寶。 

更多壓測工具詳情:https://blog.csdn.net/langzitianya/article/details/81479422

sar

linux命令。(System Activity Reporter 系統活動情況報告)是目前 Linux 上最爲全面的系統性能分析工具之一,可以從多方面對系統的活動進行報告,包括:文件的讀寫情況、系統調用的使用情況、磁盤 I/O、CPU 效率、內存使用狀況、進程活動及 IPC 有關的活動等。 free linux命令。顯示系統內存的使用情況,包括物理內存、交換內存(swap)和內核緩衝區內存。

iostat

linux命令。是I/O statistics(輸入/輸出統計)的縮寫,iostat工具將對系統的磁盤操作活動進行監視。它的特點是彙報磁盤活動統計情況,同時也會彙報出CPU使用情況。iostat也有一個弱點,就是它不能對某個進程進行深入分析,僅對系統的整體情況進行分析。iostat屬於sysstat軟件包。可以用yum直接安裝。 tee linux命令用於讀取標準輸入的數據,並將其內容輸出成文件。 tee指令會從標準輸入設備讀取數據,將其內容輸出到標準輸出設備,同時保存成文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章