压测工具Sysbench、Stress、iperf或iperf3

sysbench是一款开源的、模块化的、跨平台的多线程性能测试工具,可用于CPU、内存、磁盘I/O、线程、数据库的性能测试。sysbench目前支持的数据库压测有PG和MySQL。(若想学习数据库压测,可以私聊麦老师哟,MySQL和PG均有相关课程)
工具的官网说明:https://launchpad.net/sysbench
sysbench支持以下几种测试模式:
1、CPU运算性能
2、磁盘IO性能
3、调度程序性能
4、内存分配及传输速度
5、POSIX线程性能–互斥基准测试
6、数据库性能(OLTP基准测试)

Sysbench

1. 安装

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
sudo yum -y install sysbench
sysbench –version

2. 使用

sysbench通用参数选项如下

–threads: 线程数,若设置为2,则sysbench会启动2个线程,同时分别进行素数的计算,默认值为1。
–time: 运行时长,单位秒。若设置为5,则sysbench会在5秒内循环进行素数计算,每完成一轮就是一个event,默认值为10。
–events: event上限次数,若设置为100,则表示当完成100次event后,即使时间富余也停止运行。默认值为0,则表示不限event次数。
–forced-shutdown=STRING:超时强制中断,默认为off。 –thread-stack-size=SIZE:线程栈大小,默认64K
–thread-init-timeout=N:线程初始化等待时间,默认为30秒
–rate=N:平均事务率,0表示不限制,默认为0。
–report-interval=N:测试进度报告输出的时间间隔,0表示关闭,默认为0。
–report-checkpoints=[LIST,…]:转储完全统计信息并在指定时间点复位所有计数器,参数是逗号分隔值的列表,表示从必须执行报告检查点的测试开始所经过的时间(以秒为单位)。 默认情况下,报告检查点处于关闭状态[off]。
–debug[=on|off]:打印调试信息,默认为off
–validate[=on|off]:尽可能执行验证检查,默认为off。
–help[=on|off]:打印help信息并退出,默认为off
–version[=on|off]:打印版本信息并退出,默认为off
–config-file=FILENAME:命令行选项文件
–luajit-cmd=STRING:执行LuaJIT控制命令

1. cpu压测

sysbench --test=cpu help
sysbench cpu --cpu-max-prime=20000 --threads=8 --time=30 run


下面的命令表示10个线程执行800次请求,每个请求执行质数相加到80000000,下面开始压测:
sysbench --threads=10 --events=800  cpu --cpu-max-prime=80000000 run

指标解释:
Prime numbers limit: 20000,每个线程产生的素数上限均为2000
events per second: 650.7,所有线程每秒完成了650.74次event
total time: 10.0017s,共耗时10秒
total number of events: 6510,10秒内所有线程一共完成了6510次event
min: 3.03,完成1次event的最少耗时3.03秒
avg: 3.07,所有event的平均耗时3.07毫秒
max: 3.27,完成1次event的最多耗时3.27毫秒
95th percentile: 3.1395%次event在3.13秒毫秒内完成
sum: 19999.91,每个线程耗时10秒,2个线程叠加耗时就是20秒
events (avg/stddev): 3255.0000/44.00 // 平均每个线程完成3255次event,标准差为44
execution time (avg/stddev): 10.0000/0.00 // 每个线程平均耗时10秒,标准差为0

2. 内存压测

sysbench  --test=memory help

--memory-block-size=SIZE:测试内存块的大小,默认为1K。

--memory-total-size=SIZE:数据传输的总大小,默认为100G。

--memory-scope=STRING:内存访问的范围,包括全局和本地范围,默认为global。

--memory-hugetlb=[on|off]:是否从HugeTLB池分配内存的开关,默认为off。

--memory-oper=STRING:内存操作的类型,包括read, write, none,默认为write

--memory-access-mode=STRING:内存访问模式,包括seq,rnd两种模式,默认为seq。

开启12个线程,内存块大小为8K,顺序读写:
sysbench memory --threads=12 --memory-block-size=8K --memory-total-size=100G --memory-access-mode=seq run
sysbench memory --threads=12 --memory-block-size=8K --memory-total-size=100G --memory-access-mode=rnd run

3. 磁盘IO性能

sysbench –test=fileio help
–file-num=N:生成测试文件的数量,默认为128。
–file-block-size=N:测试时所使用文件块的大小,如果想磁盘针对innodb存储引擎进行测试,可以将其设置为16384(innodb存储引擎页的大小),默认为16384。
–file-total-size=SIZE:创建测试文件的总大小,默认为2G大小。
–file-test-mode=STRING:文件测试模式,seqwr(顺序写)、seqrewr(顺序读写)、seqrd(顺序读)、rndrd(随机读)、rndwr(随机写)、rndrw(随机读写)。
–file-io-mode=STRING:文件操作模式,sync(同步)、async(异步)、fastmmap(快速mmap)、slowmmap(慢速mmap),默认为sync。
–file-async-backlog=N:对应每个线程队列的异步操作数,默认为128。
–file-extra-flags=STRING:打开文件时的选项,与API相关的参数。
–file-fsync-freq=N:执行fsync函数的频率。fsync主要是同步磁盘文件,0代表不使用fsync函数,默认值为100。
–file-fsync-all=[on|off]:每执行完一次写操作,就执行一次fsync。默认为off。
–file-fsync-end=[on|off]:测试结束时执行fsync函数,默认为on。
–file-fsync-mode=STRING:文件同步函数选择,和API相关的参数,由于多个操作系统对于fdatasync支持不同,因此不建议使用fdatasync,默认为fsync。
–file-merged-requests=N:大多情况下,合并可能的IO的请求数,默认为0。
–file-rw-ratio=N:测试时的读写比例,默认时为1.5,即可3:2。

数据准备:

sysbench fileio –file-num=16 –file-total-size=2G prepare

执行测试:

sysbench fileio –file-total-size=2G –file-test-mode=rndrd –time=180 –threads=16 –file-num=16 –file-extra-flags=direct –file-fsync-freq=0 –file-block-size=16384 run

清理数据:

sysbench fileio –file-num=16 –file-total-size=2G cleanup

Stress

1. 安装

  1. [# wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/s/stress-1.0.4-16.el7.x86_64.rpm
  2. []# rpm -ivh stress-1.0.4-16.el7.x86_64.rpm

2. 使用

1. cpu

创建8个stress进程,持续时间600秒,模拟CPU在用户态使用率达到100%的场景。
stress –cpu 8 –timeout 600

2. 内存

创建100个io进程,持续时间600秒,模拟CPU在内核态使用率达到100%的场景。
stress –io 100 –timeout 600
stress –vm 5 –vm-bytes 1G –vm-hang 100 –timeout 100s

3.IO

创建8个stress进程和100个io进程,持续时间600秒,模拟CPU在用户态和内核态总使用率达到100%的场景。
stress -c 8 -i 100 –verbose –timeout 600

IfTOP

yum install flex byacc libpcap ncurses ncurses-devel
yum install gcc gcc-c++ autoconf automake
wget ftp://fr2.rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/iftop-0.17-1.el5.rf.i386.rpm
rpm -ivh iftop-0.17-1.el5.rf.i386.rpm

wget http://www.ex-parrot.com/~pdw/iftop/download/iftop-0.17.tar.gz
tar -xvzf iftop-0.17.tar.gz
./configure && make && make install

TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量

iperf或iperf3

服务端运行:

iperf -u -s

-u表示以udp模式运行(不加该参数,默认是以tcp模式运行),-s表示作为服务端

客户端运行:

iperf -u -c 192.168.30.115 -b 100M -t 60 -i 2

解释:在udp模式下,以100Mbps为数据发送速率,客户端到服务器192.168.30.115上传带宽测试,测试时间为60秒

iperf -c 192.168.30.115 -u -i 1 -t 10 -b 2M -P 2

解释:客户端同时向服务器端发起2个连接线程,每个连接线程以2Mbps为数据发送速率,测试时间为10秒

iperf -u -c 192.168.30.115 -b 1000M -d -t 60 -i 1

解释:以1000M为数据发送速率,进行上下行带宽测试,测试时间60秒,每秒显示一次结果


   转载规则


《压测工具Sysbench、Stress、iperf或iperf3》 by XieJiayi is licensed under a 知识共享署名 4.0 国际许可协议 许可协议。转载请注明来源
 上一篇
原理HPA在k8s中也由一个controller控制,controller会间隔循环HPA,检查每个HPA中监控的指标是否触发伸缩条件,默认的间隔时间为15s。一旦触发伸缩条件,controller会向k8s发送请求,修改伸缩对象(stat
2023-01-06
下一篇 
【gRPC SSL】自签CA、服务端和客户端双向认证 【gRPC SSL】自签CA、服务端和客户端双向认证
本文主要介绍了自签CA、服务端和客户端双向认证,主要包括自签CA、GolangGrpc服务端和客户端双向认证的相关内容,需要的朋友可以参考下
2023-01-06
  目录