安装相关的工具包
预先安装 stress 和 sysstat 包,如 apt install stress sysstat
使用uptime命令检查当前机器的负载
root@zhoucheng-virtual-machine:~# uptime
15:32:24 up 26 min, 2 users, load average: 0.00, 0.02, 0.06
场景一:CPU 密集型进程
我们在第一个终端运行 stress 命令,模拟一个 CPU 使用率 100% 的场景
stress --cpu 1 --timeout 600
watch -d uptime 观察
运行 mpstat 查看 CPU 使用率的变化情况
mpstat -P ALL 5
由上图可以看到,3号cpu的利用率达到了100,但是他的iowait是0,说明平均负载的升高是由于cpu使用率变高导致的,与io关系不大
使用 pidstat 来查询具体是谁导致的cpu升高
间隔 5 秒后输出一组数据
$ pidstat -u 5 1
我们可以看到stress 进程的使用率为100%
场景二:I/O 密集型进程
stress -i 1 --timeout 600
(如果你用的是ssd,输入上面的命令后不一定会产生很高的iowait,可以使用下面的命令
stress --hdd 8 --timeout 600 启动 8 个工作线程进行磁盘写操作
)
输入uptime观察负载
运行 mpstat 查看 CPU 使用率的变化情况:
可以看到iowait大幅增高,所以说,如果服务器上运行了io占用率较高的服务,建议使用ssd
场景三:大量进程的场景
当系统中运行进程超出 CPU 运行能力时,就会出现等待 CPU 的进程。
比如,我们还是使用 stress,但这次模拟的是 16 个进程:
stress -c 16 --timeout 600
由于我的虚拟机只有4个cpu,所以目前处于严重过载状态
接着再运行 pidstat 来看一下进程的情况
可以看到wait处于很高的值