top命令(整機):
可以查看進程的cpu占用率,和內存占用率。uptime 是top的精簡版只看整機,不看各進程。
load average: 0.00, 0.00, 0.00 表示系統1分鍾,5分鍾,15分鍾的負載值,如果三個數平均值大於0.6,說明系統負載較高。
vmstat(CPU):
例如vmstat -n 2 3 每2秒采樣一次,采樣3次
— proce r:表示運行和等待CPU時間片的進程數,原則上1核的運行隊列不要超過2,整個系統的運行隊列不能超過核數的2倍。b:表示等待資源的進程數,比如正在等待磁盤I/O,網絡I/O等。
— cpu us:用戶消耗CPU時間百分比,us值高,用戶消耗CPU時間多,如果長期大於50%需要優化程序。 sy:內核消耗進程的CPU時間百分比。us+sy大於80%,說明可能CPU不足。
pidstat(CPU):
mpstat -P ALL 2 查看所有CPU核信息
pidstat -u 1 -p 進程號 查看進程使用CPU的用量分解信息
pidstat -p 進程號 -r 秒數 查看進程內存的占用率 每幾秒采樣一次
pidstat -d 2 -p 進程號 查看進程磁盤占用情況
free(內存):
free -m 查看系統內存單位M
df(硬盤):
df -h 查看硬盤占用空間
iostat(磁盤IO):
iostat -xdk 2 3 查看磁盤快設備分布
rKB/s wKb/s 表示每秒讀寫量,svctm I/O await I/O分別表示請求的平均服務時間和等待時間,單位毫秒 值接近說明沒有等待磁盤性能好。
ifstat(網絡IO):
ifstat 查看網絡IO情況
CPU占用過高案例排查分析:
1 用top命令查找出CPU占比最高的進程 id
2 ps -ef 或者jps進一步定位,得知哪個后台程序
3 ps -mp 進程號 -o THREAD,tid, time 定位到具體線程
4 將需要的線程ID轉換為16進制格式(英文小寫格式)
5 jstack 進程ID | gep tid(16進制線程ID小寫字母) -A60 查看線程出現問題的代碼日志