Jvm內存調優常用命令


 

從以下5個角度進行排查

 

   1.CPU ——  vmstat -n 2 3 命令

 

  2.內存 ——  free -m命令

 

  3.硬盤 ——  df -h命令

 

  4.磁盤Io ——  iostat -xdk 2 3命令

 

  5.網絡Io —— ifstat命令

 

Jvm常用命令總結

一.CPU

1.查看cpu (每2s打印10次)

vmstat -n 2(秒) 10(次)

r:運行和等待進程數

b:阻塞進程數

r+b 如果大於系統的核數2倍表示性能降低

us:用戶消耗進程百分比   長期大於50,需要調優

sy:系統消耗進程百分比

us+sy 超過80,表示cpu不足

 

2.查看所有cpu核信息
mpstat -P All 2(每秒)

 

3.查看單個進程cpu信息

pidstat -u 1(秒) -p pid

pidstat -p pid -r 2(秒)

 

4.查詢線程數(可以查看當前java的線程數)

cat  /proc/pid/status

 

二.進程

1.獲取進程的pid
ps -ef | grep 項目名稱

 

2.查看最耗費進程的cpu pid(進程ID)
ps -Lfp pid或者ps -mp pid -o THREAD, tid, time或者top -Hp pid

 

3.打印CPU時間最長的線程
printf "%x\n" 線程ID 返回線程的十六進制值

 

4.輸出進程堆棧信息
jstack pid | grep 線程十六進制值

 

三.內存

1.進程堆內存使用情況,包括使用的GC算法、堆配置參數和各代中堆內存使用情況
jmap -heap pid

 

2.查看包路徑下存活的對象

jmap -histo:live pid|grep com.xxx.xxx.xx

 

3.查看堆內存部分使用量
jstat -gcutil pid 1000

 

4.導出 內存快照
jmap -dump:format=b,file=/tmp/heap.hprof pid

 

四.磁盤

磁盤分布查看(大批量的表存儲查詢會導致i/o不足)

iostat -xdk 2(秒) 3(次)

await   i/o平均等待時間 值越小越好

svctm  i/o平均服務時間

await > svctm 表示i/o等待時長,需優化

%util  1s中百分之幾時間用於i/o操作,接近100 表示磁盤帶寬跑滿

 

查找占用IO最高的程序

ps -e -L h o state,cmd | awk '{if($1=="R"||$1=="D"){print $0}}' | sort | uniq -c | sort -k 1nr

 

五.網絡

ifstat   查看網口的網絡情況

查看網絡IO情況 

sar -n DEV 1 10

 

查看某個ip地址Socket鏈接數

netstat -nalp |grep ip地址 |wc -l

 

抓包

tcpdump -i eth0(網口) -w xxx.pcap &  

 

六.文件

查看當前進程id的 文件操作狀況

lsof -p pid | wc -l 

查看每個用戶允許打開的最大文件數

ulimit -a 

設置用戶允許打開最大數

ulimit -n 4096


免責聲明!

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



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