1. cpu
1.1 top命令
我们可以通过top命令查看服务器CPU的使用情况及负载情况
$ top
- 按数字“1”键查看各核数cpu的使用情况,包括用户空间(us)、系统空间(sy)、空闲时间(id)等使用百分比, 这些字段可以帮助你了解CPU的当前负载情况。
- 按大写字母"P"键可以查看每个进程占用的cpu的百分比
1.2 vmstat命令
$ vmstat 2 5
这将每隔2秒采集一次系统性能信息,并显示5次。
当然也可以把数据长时间输出,重定向一个文件里面去。
us(user space):用户空间中运行的时间百分比。
sy(system space):内核空间中运行的时间百分比。
id:空闲时间百分比。
wa:等待IO的时间百分比,值越大,影响系统的磁盘I/O性能越大。
st:被虚拟机利用的cpu时间百分比,这个值在虚拟化环境下才有意义。
喂!进来深度交流
2. 内存
2.1 free命令
$ free -m
$ free -g
userd + free + buff/cache = total
-
shared 是多个进程共享的内存量
-
buffer是写缓冲区,用于存储速度不同步的设备或优先级不同的设备之间传输的数据。它主要用于写入磁盘的场景,例如,当某个进程要求多个字段被写入磁盘时,这些字段在写入磁盘之前会先被存储在buffer中,待所有字段都准备好后再一次性写入磁盘,这样可以减少磁盘I/O操作的次数,提高写入效率。
-
cache是读缓存区,是高速缓存,位于CPU和主内存之间,容量较小但速度很快。它主要用于存储被频繁读取的文件系统数据,包括文件系统的元数据和文件内容。由于读取缓存的速度远快于从磁盘读取,因此cache可以显著提高系统的IO性能。
-
buff/cache:被缓冲(buffers)和缓存(cache)使用的内存量。这部分内存虽然被标记为“已用”,但实际上可以随时被回收用于新的应用需求,因此不应被视为真正的“已用”内存,因为当系统内存资源紧张的时候会使用到buff/cache占用的内存。
-
如果available内存很低,那么可能需要考虑增加物理内存或优化现有应用程序的内存使用。
2.2 top命令
$ top
top 命令看内存资源使用率没有free命令那么直观,但是top命令可以看进程占用的内存百分比
2.3 vmstat命令
$ vmstat
swpd:显示每秒交换到磁盘(分页)的内存量,这个值越高说明系统内存不足,正在频繁地使用交换空间,系统性能也会下降。
free: 可用的内存
buff:是系统所占用的写缓存量,这个内存会根据系统情况会被回收
cache:是系统占用的读缓存量,这个内存会根据系统情况会被回收
可用使用sync
命令确保数据缓存的数据写入磁盘,释放缓存空间
3. 硬盘
3.1 df命令
$ df -hi
$ df -hT
inodes是用来存储文件的元数据的,意味着当你需要访问文件的属性或数据时,系统会通过inode快速定位到相应的信息。在创建文件系统时,inode的数量就已经确定。一旦inode被用完,即使磁盘空间还有剩余,也无法再创建新文件。这是因为每个文件或目录都需要一个inode来存储其元数据。
inode用完可能会导致文件系统无法正常操作,因为每个文件或目录都需要一个inode来存储其元数据。
排查方法:
1、用df -ih命令查找哪个分区面临inodes耗尽
2、查找占用大量inode的目录find / -type f | xargs ls -li | sort -nrk 9 | head -n 20
命令根据需求进行调整。
3、清理不必要的文件和目录
3.2 iotop命令
# 显示所有进程的io情况
$ iotop
# 只显示有io的进程
$ iotop -o
TID 线程号或进程号
PRIO 线程运行时的I/O优先级
USER 进程所属用户
DISK READ 刷新时间间隔内读取数据量
DISK WRITE 刷新时间间隔内写入数据量
SWAPIN 每个进程的交换使用率
IO 每个进程的 I/O 利用率,包含磁盘和交换
COMMAND 进程名字
3.3 iostat命令
每秒更新一次数据,显示10次
$ iostat /dev/sd[a-z] -x -m 1 10
- rMB/s(每秒读请求)
- wMB/s(美妙写请求)
- svctm是平均每次io请求的响应时间。
- avgrq-sz(平均请求大小)
- avgqu-sz是平均请求队列的长度。毫无疑问,队列长度越短越好
- await是平均每次io请求的等待时间。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。
- util是设备的利用率。如果它接近100%说明磁盘性能达到瓶颈
4.网络流量
4.1 iftop命令
iftop上面显示说明:
- 中间的<= =>这两个左右箭头,表示的是流量的方向。“=>”代表发送数据,“<=”代表接收数据
- 最右列又分为三小列,这些实时参数分别表示外部 IP 连接到本机 2 秒内、10 秒内和 40 秒内的平均流量值。
$ iftop -i ens32
iftop最下面显示说明
- TX:发送流量
- RX:接收流量
- TOTAL:总流量
- Cumm:运行iftop到目前时间的总流量,也就是累计值
- peak:流量峰值
- rates:分别表示过去 2s 10s 40s 的平均流量
5. 网络连接
5.1 ss命令
$ ss -ntlup
6. 进程
6.1 ps命令
# 查看所有进程的使用
$ ps -aux
# 查看进程占用cpu使用率前10的进程
$ ps -eo pid,ppid,%cpu,comm --sort=-%cpu | head -n 11
# 查看进程占用内存使用率前10的进程
$ ps -eo pid,ppid,%mem,comm --sort=-%mem | head -n 11
- VSZ表示进程所能访问的虚拟内存总量,单位通常是KB
- RSS表示进程当前在物理内存中占用的空间大小,单位通常也是KB
6.2 top命令
上述第1大点已说过