1. 程式人生 > >Linux性能查詢常用指令

Linux性能查詢常用指令

size messages 創建 cor pro -s spa log文件 取出

類別 監控指令 描述 備註

內存

瓶頸

free 查看內存使用

cpu

瓶頸

top -Hp 查看cpu使用最高的進程
vmstat 3(間隔時間) 100(監控次數) 查看swap in/out定位性能瓶頸 推薦使用
ps -Lp 進程號 cu 查看某個進程的cpu消耗排序

cat /proc/cpuinfo

|grep ‘processor‘|wc -l

查看cpu核數
top

查看cpu總體消耗,

包括分項消耗

如user,system,idle,

nice等消耗

top

然後shift+h:

顯示java線程,

然後shift+M:

按照內存

使用進行排序;

shift+P:

按照cpu時間排序;

shift+T:

按照cpu累計

使用時間排序

多核cpu,

按“1”進入top視圖

網絡

瓶頸

cat /var/log/messages 查看內核日誌,查看是否丟包
watch more /proc/net/dev

用於定位丟包,錯包情況,

以便看網絡瓶頸

重點關註drop(包被丟棄)

和網絡包傳送的總量,

不要超過網絡上限

netstat -i 查看網絡錯誤
ping ip 測試網絡性能

磁盤

瓶頸

iostat -x -k -d 1 磁盤的io讀寫情況

當看到I/O等待時間所

占CPU時間的比重

很高的時候,

首先要檢查的就是機器

是否正在大量

使用交換空間,

同時關註iowait

占比cpu的消耗是否很大,

如果大說明磁盤

存在大的瓶頸,

同時關註await,

表示磁盤

的響應時間

以便小於5ms

iostat -x 查看系統各個磁盤的讀寫情況

重點關註await

和iowait的cpu占比

iotop 查看哪個進程在大量讀取IO

一般先通過iostat

查看是否存在io瓶頸,

再定位哪個進程在

大量讀取IO

df -hl 查看磁盤剩余空間
du -sh 查看當前磁盤的使用空間

應用

瓶頸

ps -ef|grep java 查看某個進程的id號
ps -ef|grep java|wc -l 查看特定進程的數量
netstat -tln|grep 8080 查看端口占用情況
lsof -i:8080 查看端口屬於哪個進程

cat ***.log | grep ***Exception

| wc -l

統計日誌文件中包含特定異常數量
jstack -l pid 用於查看線程是否存在死鎖
grep -v ‘HTTP/1.1″ 200′ 取出非200響應碼的URL
ps -efL | grep [PID] | wc -l 查看某個進程創建的線程數
find / type f -name "*.log"|xargs grep "ERROR"

統計所有的log文件中,

包含Error字符的行

這個在排查問題

過程中比較有用

jstat -gc [pid] 查看gc情況
jstat -gcnew [pid]  

查看young區的內存使用情況,

包括MTT(最大交互次數就

被交換到old區),

TT是目前已經交換的次數

jstat -gcold 查看old區的內存使用情況

jmap -J-d64 -dump:format=b,

file=dump.bin PID

dump出內存快照

-J-d64防止jmap導致

虛擬機crash(jdk6有bug)

XX:+HeapDumpOnOutOfMemeryError

在java啟動時加入,

當出現內存溢出時,

存儲內存快照

jmap -histo [pid] 按照對象內存大小排序 註意會導致full gc
gcore [pid] 導出完成的內存快照

通常和jmap -permstat

/opt/**/java gcore.bin

一起使用,將core dump

轉換成heap dump

-XX:HeapDumpPath=/home/logs

-Xloggc:/home/log/gc.log

-XX:+PrintGCDetails

-XX:+PrintGCDateStamps

在Java啟動參數中加入,

打印gc日誌

-server -Xms4000m -Xmx4000m

-Xmn1500m -Xss256k

-XX:PermSize=340m -XX:MaxPermSize=340m

-XX:+UseConcMarkSweepGC

調整JVM堆大小 xss是棧大小

Linux性能查詢常用指令