Linux高级

生产服务器变慢,诊断思路和性能评估?

1、使用top命令查看整机的使用情况(uptime显示的信息较少)

主要看load(加载,负载) average(平均) 俗称系统的负载均衡,三个值代表1分钟、5分钟、15分钟系统的平均负载值,如果三个值相加/3*100%如果大于60%代表系统负载过重。

%CPU //cpu使用率

%MEM //内存使用率

Linux高级

2、vmstat(查看cpu使用情况)

vmstat -n 2 3 //每两秒采样一次cpu情况,总共采样3次

Linux高级
主要看procs

r (runtime)运行和等待cpu时间片的进程数,整个系统的等待线程数不能超过总核数的两倍,否则代表体统压力过大。

b (Blocking)阻塞,等待资源的进程数比如磁盘IO阻塞、网络IO阻塞。

-cpu

us :用户进程消耗cpu时间百分比,us值越高,用户进程消耗cpu时间越高,如果长期大于50%,优化程序

sy :系统内核消耗cpu时间百分比

us+sy参考值为80%,如果两者和大于80%,说明可能存在cpu不足。

id : 代表cpu空闲,越大越好。

3、查看所有cpu核信息

mpstat -P ALL 2 //每两秒采样一次

idle //cpu空闲百分比

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yGUeCqX7-1601111220889)(http://www.ztinfo.xyz/upload/2020/1/image-7d1d7ecb54db4c68bc2d69da2ed228b1.png)]

4、每个进程使用cpu的分量分解信息

pidstat -u 1 -p 进程编号 //每秒中采样一次。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gJlRqiVe-1601111220891)(http://www.ztinfo.xyz/upload/2020/1/image-f4a5795d79f442e9bbcdb4b006f9a842.png)]

5、内存使用情况

free //以字节的方式呈现

free -g //以G的方式呈现

free -m //以M的方式呈现

20%<可用内存/总内存<70% 内存基本够用

6、硬盘使用情况

df -h //以G的单位显示 human(人类) 以人类的方式展示。

7、磁盘IO(iostat)

iostat

一般大表,数据量大会产生比较久的IO

iostat -xdk 2 3 //每两秒采样一次,总共采样3次。

主要看util 一秒钟有百分之几的时间用于io操作,接近100%代表磁盘带宽跑满,需要优化程序。

await //io请求的平均等待时间。

svctm //io请求的平均服务时间。

rkb/s //每秒读取数据量kb

wkb/s //每秒写入数据量

Linux高级

pidstat -d 采样时间 -p 进程编号 //查看某个进程磁盘io使用情况

Linux高级

8、网络IO(ifstat)

看是否是网络传输导致慢

Linux高级

Cpu占用过高,分析思路和定位(印象深刻的故障)

先用top命令找出cpu占比最高的进程id(pid)

Linux高级

用jps -l或者ps -ef | grep java

Linux高级

定位到具体的线程

ps -mp 进程 -o THREAD,tid,time

Linux高级

Linux高级

将线程id转换成16进制的小写字母。

通过上一步我们知道3929这个线程惹的祸,转换成16进制是f59

用jstack 进程id | grep 线程16进制 -A60

-A60打印前60行

找到自己写的类,例如如图第十行有问题

Linux高级