前言
在生產(chǎn)環(huán)境中,逐出出現(xiàn)CPU飆升100%,內(nèi)存溢出等,連接池等待等一些不容易定位的問題让网,在生產(chǎn)環(huán)境的也無法像測試環(huán)境一樣debug調(diào)試,這邊我整理了一些常用的定位問題的命令师痕。分為JVM相關(guān)命令和Linux相關(guān)命令寂祥。
JVM相關(guān)命令
查看進程id
// 查看所有Java項目進程id列表,找到你們項目的進程id
jps -l
查詢進程CPU占用率
pidstat -u -p PID [時間間隔] 次數(shù)
// 查看進程id為3546的進程CPU占用率七兜,每個1秒輸出一次,循環(huán)10次
pidstat -u -p 3546 1 10
image-20210321180941521
堆中對象的統(tǒng)計信息
jmap -histo PID [| head -TOPN]
// 打印出堆中對象的統(tǒng)計信息福扬,顯示最大的前20條對象
jmap -histo 2833 | head -20
查詢進程IO
pidstat -d -p PID [時間間隔] 次數(shù)
// 查看進程id為10823的進程IO腕铸,每個1秒輸出一次惜犀,循環(huán)10次
pidstat -d -p 10823 1 10
查看進程GC配置信息
jinfo PID
// 查看進程id為10823的GC配置信息
jinfo 10823
查看進程堆信息
jmap -heap PID
// 查看進程id為10823的進程堆的使用情況
jmap -heap 2833
查看線程堆棧信息
printf “%x\n” 線程PID // 將pid轉(zhuǎn)換為16進制
jstack PID | grep '16進制線程PID' -C5 --color
// 將id為10992轉(zhuǎn)換為十六進制
printf "%x\n" 10992
// 打印出進程id為10823的線程id為0X6bn的堆棧信息
jstack 10823 | grep '0X6bn' -C5 --color
查看GC信息
jstat -gc PID [時間間隔] 次數(shù)
// 打印出進程id為10823的進程gc信息,每個500毫秒打印一次狠裹,循環(huán)10次
jstat -gc 10823 500 10
查詢進程內(nèi)存占用率
pidstat -r -p PID [時間間隔] 次數(shù)
// 查看進程id為2833的進程內(nèi)存占用率虽界,每個1秒輸出一次,循環(huán)10次
pidstat -r -p 2833 1 10
image-20210321181205332
查看進程的TOP信息
top -b -n 1 -p PID
top -b -n 1 -p 2833
image-20210321181245208
Linux相關(guān)命令
機器內(nèi)存
free -glt
IO
vmstat -t [時間間隔] 次數(shù)
vmstat -t 1 10
iostat 1 10
CPU負(fù)載
mpstat -A 1 1
網(wǎng)絡(luò)信息
netstat -an
// 網(wǎng)絡(luò)信息統(tǒng)計
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
TOP
top -b -n 1