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 查看线程出现问题的代码日志