当我们的 Linux 服务器反应变慢或者想要查看我们的 Linux 服务器性能时,我们可以从以下几个方面入手。
一. 使用 top 查看整机的性能数据(类似于打开 Windows 的任务管理器,可以查看各进程等数据)
进入后我们看到的是总的 CPU 数据,我们要查看各 CPU 分别的情况时可以按 1 进行展开或者合并。
运行 top 默认显示主要的列,当需要显示更多列更多信息时,可以按 f 键来添加所要显示的信息。
- 进程号:进程序号,用于区分不同进程。
- USER:进程所有者。
- PR(Priority):进程优先级,越小优先级越高。
- NI(Nice):进程优先级的修正值。(PR是系统创建线程时赋予的优先级,不可改变,当我们要改变进程优先级时,只能赋值该修正值。实际进程优先级 = PR + NI)
- VIRT(Virtual):进程所占用虚拟内存大小,线程定义所需要占用的内存。
- RES(Resident):进程的物理、实际内存大小。线程定义虚拟内存大小,但是实际使用到的内存大小。
- SHR(share):进程的共享内存大小。进程共享给其它线程的内存大小,线程实际自身使用内存大小 = RES - SHR。
- S、D、R、T、Z:表示进程状态,S 表示可以中断的睡眠状态(在睡眠状态中可以被命令唤醒),D 表示不可以中断的睡眠状态(在睡眠状态中不可以被命令唤醒,只能到等待时间之后唤醒),R 表示可运行状态,T 表示停止状态,Z 表示僵尸状态(进程已经终止)。
- %CPU:上一次使用 CPU 的时间到现在时间的百分比。
- %MEM:进程所使用的物理内存所占总内存的百分比。
- TIME+:进程启动后总的占用的 CPU 时间,即每轮使用 CPU 的时间累加值。
- COMMAND:进程启动所执行的命令。
二. 我们可以使用 uptime 命令来查看系统平均负载
- 前面是执行命令时的时间。
- up 4 min 是指系统启动时间,此处为启动了 4 分钟。
- 1 user 是指系统当前登录用户数。
- load average 是指系统的负载均衡,分别为 1 min、5 min、10 min 的平均值。
三. 查看 CPU
vmstat -n 2 4 :后面的两个参数分别配置采样时间间隔和采样次数,也就是说每隔 2 秒会采样一次 CPU 数据,然后总共会采样 4 次 CPU 数据。
- r 是指运行和等待 CPU 时间片的进程数,该数据根据系统的核数来判断,作者是 4 核系统,所以等待进程最多为 1 完全没问题。一般运行等待进程数超过核数两倍后就会影响系统性能。
- b 是指等待资源的进程数,比如等待磁盘I/O、网络I/O等。
- us 指用户进程消耗 CPU 时间百分比。
- sy 指内核进程消耗 CPU 时间百分比。
- id 处于空闲的 CPU 时间百分比。
- wa 处于等待的 CPU 时间百分比。
- st 虚拟机占用的 CPU 时间百分比。
后面五个数据之和为 100,也就是说 CPU 的所有时间由该五者组成。当 us 和 sy 的总时间超过 80,也就是说用户进程跟内核进程一起占用超过了 CPU 的 80% 的时间,说明 CPU 不够用。
- 也可以使用 cat /proc/cpuinfo 或者 less /proc/cpuinfo 指令来查看 CPU 信息文档,前者直接把整个文件内容打印出来,后者进入阅读模式,可以进行翻页查看操作。
四、查看内存
- 使用 free 指令来查看内存使用情况,后面的 -k、-m、-g 参数分别指用 KB、MB、GB 为单位。
- 也可以使用 cat /proc/meminfo 指令来查看内存信息文档。
五、硬盘
使用 df -h 指令来查看硬盘使用情况。
六、磁盘 IO
使用 iostat -xdk 2 3 指令查看磁盘 IO 情况,后面的 2 和 3 分别指每 2 秒采样一次,一共采样 3 次。