目录
一、五大命令
二、故障排查步骤
1、top命令找出CPU占比最高的
2、ps -ef 或者 jps -l进一步定位
3、ps -mp位到具体线程或者代码
4、jstack精准定位到错误的地方
本文通过学习:周阳老师-尚硅谷Java大厂面试题第二季 总结的Linux+JDK命令操作相关的笔记
一、五大命令
模块 | 命令 | 说明 |
整机 | top | 重点关注的是 %CPU、%MEM 、load average 三个指标。在这个命令下,按1的话,可以看到每个CPU的占用情况。也可用uptime(系统性能命令的精简版) |
CPU | vmstat | vmstat -n 2 3 第一个参数是采样的时间间隔数(秒),第二个参数是采样的次数 |
网络 | ifstat | |
内存 | free | free -h:以人类能看懂的方式查看物理内存 free -m:以MB为单位,查看物理内存 free -g:以GB为单位,查看物理内存 |
硬盘 | df du iostat | (1)df -h 以人类能看到的方式换算 (2)du -h ./* (3)iostat -xdk 2 3 查看I/O 系统慢有两种原因引起的,一个是CPU高,一个是大量IO操作 rkB /s:每秒读取数据量(kB) wkB/s:每秒写入数据量(kB) svctm I/O:请求的平均服务时间(毫秒) await I/O:请求的平均等待时间(毫秒),值越小,性能越好 (svctm的值与await的值很接近,表示几乎没有I/O等待,磁盘性能好,如果await的值远高于svctm的值,则表示I/O队列等待太长,需要优化程序或更换更快磁盘) util:一秒钟有百分几的时间用于I/O操作。接近100%时,表示磁盘带宽跑满,需要优化程序或者增加磁盘。 |
二、故障排查步骤
1、top命令找出CPU占比最高的
2、ps -ef 或者 jps -l进一步定位
3、ps -mp位到具体线程或者代码
ps -mp 进程ID -o THREAD,tid,time
-m 显示所有的线程
-p pid进程使用cpu的时间
-o 该参数后是用户自定义格式
4、jstack精准定位到错误的地方
jstack 十进制进程ID | grep 小写十六进制线程ID -A60
十进制进程ID = 5101,5102转为小写十六进制线程ID = 13ee, -A60输出60行
package com.atguigu.test;
|