目录
应用系统变慢,可能有多个原因,一般我们用以下几个命令来排查原因:
- 整体情况 top
- cpu vmstat
- 内存 free
- 硬盘 df
- 磁盘IO iostat
- 网络IO ifstat
TOP命令
通常我们会先用top命令看一下整机的情况:
通常我们看三个参数值:
-
%CPU:cpu的使用率
-
%MEM:内存使用率
-
load average:0.00,0.01,0.03 分别代表系统1分钟,5分钟,15分钟 系统的平均负载值。一般情况下,三者平均值大于0.6,就认为系统负载较大,需要注意。
在top命令下连续按1,可以显示具体的cpu列表
top命令有一个精简版命令:uptime
vmstat命令
我们通常用vmstat查看cpu和内存情况,如下图:
下面对输出的每一列做一下简单介绍:
-procs
- r:运行和等待CPU时间片的进程数,原则上1核的CPU的运行队列不要超过2个。整个系统的运行队列不能超过总核数的2倍,否则表示系统压力过大
- b:等待资源的进程数,比如正在等待磁盘I/O,网络I/O等。
-cpu
- us:用户进程消耗CPU时间百分比,us值高,表示用户进程消耗CPU时间多。如果长期大于50%,需要优化程序。
- sy:内核进程消耗的CPU时间百分比。
- id:处于空闲的CPU百分比
- wa:系统等待IO的CPU时间百分比
- st:来自于一个虚拟机偷取的CPU时间的百分比
需要注意:us+sy参考值为80%,如果us+sy大于80%,说明可能存在CPU不足。
直接使用vmstat命令,只输出一行信息,我们可以用以下命令,来采样查看:
vmstat -n 2 10
意思是:每个2秒采集一次,共采集10次
查看所有CPU核信息:mpstat -P ALL 2,每两秒采样一次,打印出所有CPU核信息
查看每个进程使用CPU的用量分解信息 pidstat -u -1 -p 进程编号
free命令
我们通常用free查看系统的内存,free表示按照字节显示,free -g 表示按照GB显示内存,free -m 表示按照MB显示内存。
-经验值:
-
应用程序可用内存/系统物理内存>70%,内存充足。
-
应用程序可用内存/系统物理内存<20%,内存不足,需要增加内存。
-
20%<应用程序可用内存/系统物理内存<70%,内存基本够用
查看内存额外信息:
pidstat -p 进程号 -r 采样间隔秒数
df命令
现在服务基本都是部署在云上,磁盘容量管够,但是我们还是要知道怎么查看磁盘的使用情况。
df:以字节的形式显示用量,剩余量等信息。
df -h:以正常人能看得懂的方式显示用量,剩余量等信息。
iostat命令
大表批量存大批量的数据时,长时间的IO会对性能造成很大的影响,通常我们用
iostat -xdk 2 3来查看磁盘io的情况。2表示时间间隔2秒,3表示采样次数。
查看额外信息,可以使用
pidstat -d 采样间隔秒数 -p 进程号
来查看。
ifstat命令
网络IO有时也是造成性能瓶颈的主要原因,我们可以通过ifstat查看网络IO的情况。