1. 查看CPU及内存使用排行
1)查看当前CPU及内存的整体使用情况
top
2)可以使用以下命令查使用内存最多的10个进程
ps -aux | sort -k4nr | head -n 10
3)可以使用一下命令查使用CPU最多的10个进程
ps -aux | sort -k3nr | head -n 10
2. 服务器性能变慢的排查
1)查看整机性能
A. top
查看cpu与mem的使用率,主要基于load average
B. uptime
查看load average
2)查看CPU使用情况
A. vmstat
vmstat -n 2 3 : 每2s采样一次,总计采样3次 一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数(单位s),第二个参数是采样的次数 - 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时间的百分比;
B. mpstat
查看所有cpu核信息
mpstat -P ALL 2 :2s钟采样一次所有CPU的信息
C. pidstat
查看每个进程使用cpu的用量分解信息
pidstat -u 1 - p 进程号 : 查看进程cpu使用情况
3)查内存使用情况
A. free
free -g // GB为单位 free -m //MB为单位
经验值:
- 应用程序可用内存/系统物理内存>70%内存充足
- 应用程序可用内存/系统物理内存<20%内存不足,需要增加内存
- 20%<应用程序可用内存/系统物理内存<70%内存基本够用
B. pidstat
pidstat -p 进程号 -r 采样间隔秒数
4)硬盘使用情况
A. df
df -h 查看可视化效果好的碰盘使用情况
5)查看碰盘IO使用情况
A. iostat
查看碰盘I/O使用情况
iostat -xdk 2 3
碰盘块设备分布
- rkB/s:每秒读取数据量KB;
- wkB/s:每秒写入数据量KB;
- svctm:I/O请求的平均服务时间,单位毫秒;
- await:I/O请求的平均等待时间,单位毫秒;值越小,性能越好;
- util:1s中用于I/O操作的比例(百分比)。接近100%时,表示磁盘带宽跑满,需要优化程序或者增加磁盘;
rkB/s、wkB/s根据系统应用不同会有不同的值,但有规律遵循:长期、超大数据读写,肯定不正常,需要优化程序读取。svctm的值与await的值很接近,表示几乎没有I/O等待,磁盘性能好,如果await的值远高于svctm的值,则表示I/O队列等待太长,需要优化程序或更换更快磁盘;
B. pidstat
pidstat -d 采样间隔秒数 -p 进程号
5)查看网络IO使用情况
A. ifstat
默认本地没有,需要下载ifstat
ifstat 1 //查看各个网卡的in、out观察网络负载情况,程序网络读写是否正常,用于程序网络I/O优化,增加网络I/O带宽做参考