Java性能調優工具(Linux)


為了能准確獲得程序的性能信息,需要使用各種輔助工具。以下主要介紹了Linux上關於Java的系統性能分析工具,掌握這些工具,對於性能瓶頸定位、系統故障排查都有幫助。

1、top命令

 1 [root@localhost ~]# top
 2 top - 10:00:05 up 4 days, 22:16,  1 user,  load average: 0.00, 0.01, 0.05
 3 Tasks: 211 total,   1 running, 210 sleeping,   0 stopped,   0 zombie
 4 Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
 5 Mem:   8064684k total,  3277888k used,  4786796k free,   202912k buffers
 6 Swap:  8142844k total,        0k used,  8142844k free,  2503844k cached
 7 
 8   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                          
 9 18730 root      20   0 15196 1220  840 R  0.3  0.0   0:00.06 top                                                                                                                               
10     1 root      20   0 19408 1576 1252 S  0.0  0.0   0:00.87 init                                                                                                                              
11     2 root      20   0     0    0    0 S  0.0  0.0   0:00.08 kthreadd                                                                                                                          
12     3 root      20   0     0    0    0 S  0.0  0.0   0:00.31 ksoftirqd/0                                                                                                                       
13     5 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 kworker/0:0H                                                                                                                      
14     7 root      RT   0     0    0    0 S  0.0  0.0   0:00.03 migration/

【釋義】

第一行:top - 10:00:05 up 4 days, 22:16, 1 user, load average: 0.00, 0.01, 0.05

任務隊列信息:與uptime命令執行結果一樣。

10:00:05 up 4 days, 22:16 1 user load average: 0.00, 0.01, 0.05
當前系統時間 系統運行時間,格式為時:分 當前登錄用戶數

系統負載,即任務隊列的平均長度。 三個數值分別為  1分鍾、5分鍾、15分鍾前到現在的平均值。

第二行:Tasks: 211 total, 1 running, 210 sleeping, 0 stopped, 0 zombie

進程統計信息:

211 total 1 running 210 sleeping 0 stopped 0 zombie
進程總數 正在運行的進程數 睡眠的進程數 停止的進程數

僵屍進程數

第三行:Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

CPU統計信息:

0.0%us 0.0%sy 0.0%ni 100.0%id 0.0%wa 0.0%hi 0.0%si 0.0%st
用戶空間CPU占用率 內核空間CPU占用率 用戶進程空間內改變過優先級的進程CPU占用率 空閑CPU占用率 等待輸入輸出的CPU時間百分比 硬件中斷請求 軟件中斷請求 Steal Time

第四、五行:Mem: 8064684k total, 3277888k used, 4786796k free, 202912k buffers

                Swap: 8142844k total, 0k used, 8142844k free, 2503844k cached

內存信息:

Mem 8064684k total 3277888k used 4786796k free 202912k buffers
物理內存總量 已使用的物理內存 空閑物理內存 內核緩存使用量
Swap 8142844k total 0k used 8142844k free 2503844k cached
交換區總量 使用的交換區總量 空閑交換區大小 緩存交換區大小

第六行:PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

進程信息:

PID USER PR NI VIRT RES

進程id

進程所有者的用戶id 優先級 nice值。負值表示高優先級,正值表示低優先級 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA

SHR

S %CPU %MEM TIME+ COMMAND
共享內存大小,單位kb 進程狀態。
 D=不可中斷的睡眠狀態
 R=運行
 S=睡眠
 T=跟蹤/停止
 Z=僵屍進程
上次更新到現在的CPU時間占用百分比 進程使用的物理內存百分比 進程使用的CPU時間總計,單位1/100秒 命令名/命令行

還有其他的一些參數,這里沒有列出,了解請查看《Java程序性能優化-讓你的Java程序更快、更穩定》這本書的第300頁。

另外,top命令還有一些比較使用的交互命令:

f o h k q c M P T 數字1
可以進行列的選擇 可以更改列的顯示順序 顯示幫組信息 終止一個進程 退出程序 切換顯示命令名稱和完整命令行 根據駐留內存大小進行排序 根據CPU使用百分比大小進行排序 根據時間/累積時間進行排序 顯示所有CPU負載情況

 

注意:使用top命令可以從宏觀上觀察系統各個進程對CPU的占用情況以及內存使用情況

 

2、sar命令

3、vmstat命令

4、iostat命令

5、pidstat命令


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM