对于Linux 环境,top
命令是使用频繁且信息较全的命令, 它对于所有正在运行的进行和系统负荷提供实时更新的概览信息。stress
是个简单且全面的性能测试工具。通过它可以模拟各种高负载情况。
通过top
与stress
这两个命令的结合使用,基本可以达到压力测试的目的。
# 查看cpu个数
cat /proc/cpuinfo
# 查看内存大小
cat /proc/meminfo
# 查看当前内存使用情况
free -h
# 查看磁盘大小
df -h
# 查看当前文件夹已用磁盘大小
du -sh ./*
执行top
命令
top - 03:13:05 up 7 days, 1:29, 4 users, load average: 0.85,0.67.0.57
Tasks: 182 total, 1 running, 181 sleeping, 0 stopped, 0 zombie
%Cpu(s):3.6 us, 5.1 sy, 0.0 ni, 91.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem :7888320 total, 1695796 free, 4378504 used, 1814020 buff/cache
KiB Swap: 8126460 total, 8126460 free, 0 used. 3156100 avail Mem
第四第五行分别是内存信息和swap信息,所有程序的运行都是在内存中进行的,所以内存的性能对与服务器来说非常重要。不过当内存的free变少的时候,其实我们并不需要太紧张。真正需要看的是Swap中的used信息。
Swap分区是由硬盘提供的交换区,当物理内存不够用的时候,操作系统才会把暂时不用的数据放到Swap中。所以当这个数值变高的时候,说明内存是真的不够用了。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
在RHEL/CentOS 系统可以使用 yum install stress
在Debian/Ubuntu系统中,可以使用apt-get install stress
源码离线安装 stress-1.0.4.tar.gz
tar -zxvf stress-1.0.4.tar.gz
cd stress-1.0.4
./configure
make
make install
帮助命令:stress --help
`stress' imposes certain types of compute stress on your system
Usage: stress [OPTION [ARG]] ...
-?, --help show this help statement
--version show version statement
显示版本号
-v, --verbose be verbose
显示详细的信息
-q, --quiet be quiet
程序在运行的过程中不输出信息
-n, --dry-run show what would have been done
输出程序会做什么而并不实际执行相关的操作
-t, --timeout N timeout after N seconds
在 N 秒后结束程序
--backoff N wait factor of N microseconds before work starts
等待N微妙后开始运行
-c, --cpu N spawn N workers spinning on sqrt()
产生 N 个进程,每个进程都反复不停的计算随机数的平方根
-i, --io N spawn N workers spinning on sync()
产生 N 个进程,每个进程反复调用 sync() 将内存上的内容写到硬盘上
-m, --vm N spawn N workers spinning on malloc()/free()
产生 N 个进程,每个进程不断分配和释放内存
--vm-bytes B malloc B bytes per vm worker (default is 256MB)
指定分配内存的大小
--vm-stride B touch a byte every B bytes (default is 4096)
不断的给部分内存赋值,让 COW(Copy On Write)发生
--vm-hang N sleep N secs before free (default none, 0 is inf)
指示每个消耗内存的进程在分配到内存后转入睡眠状态 N 秒,然后释放内存,一直重复执行这个过程
--vm-keep redirty memory instead of freeing and reallocating
一直占用内存,区别于不断的释放和重新分配(默认是不断释放并重新分配内存)。
-d, --hdd N spawn N workers spinning on write()/unlink()
产生 N 个不断执行 write 和 unlink 函数的进程(创建文件,写入内容,删除文件)
--hdd-bytes B write B bytes per hdd worker (default is 1GB)
指定文件大小
Example: stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s
Note: Numbers may be suffixed with s,m,h,d,y (time) or B,K,M,G (size).
stress常用压测命令
# CPU压力测试
# 启动2个CPU进程
stress -c 2
# 启动2个CPU进程,持续时间为60s
stress -c 2 -t 60
# 内存压测
# 启动2个进程,每个进程分配1G内存,分配后不释放
stress --vm 2 --vm-bytes 1G --vm-keep
# IO压测
# 启动4个进程,将内存上的内容写到硬盘上,top命令可看到sy升高,wa升高
stress -i 4
# 磁盘IO压测
# 创建一个进程不断地在磁盘上创建10M大小的文件并写入内容
stress -d 1 --hdd-bytes 10M