测试工具

整理一些linux上常用测试工具

硬盘测试

fio

fio安装

yum install -y fio

参数说明

参数 说明
direct=1 忽略缓存,直接写入磁盘
iodepth=128 请求的IO队列深度
rw=write 读写策略,可选值randread(随机读),randwrite(随机写),read(顺序读),write(顺序写),randrw(混合随机读写)
ioengine=libaio IO引擎配置,建议使用libaio
bs=4k 块大小配置,可以使用4k,8k,16k等
size=200G 测试生成文件的大小
numjobs=1 线程数配置
runtime=1000 测试运行时长,单位秒
group_reporting 测试结果汇总展示
name=test 测试任务名称
filename=/data/test 测试输出的路径与文件名

测试使用

  • 读时延
fio -direct=1 -iodepth=1 -rw=read -ioengine=libaio -bs=4k -size=200G -numjobs=1 -runtime=1000 -group_reporting -name=test -filename=/data/test
  • 写时延
fio -direct=1 -iodepth=1 -rw=write -ioengine=libaio -bs=4k -size=200G -numjobs=1 -runtime=1000 -group_reporting -name=test -filename=/data/test
  • 读带宽
fio -direct=1 -iodepth=32 -rw=read -ioengine=libaio -bs=256k -size=200G -numjobs=4 -runtime=1000 -group_reporting -name=test -filename=/data/test  
  • 写带宽
fio -direct=1 -iodepth=32 -rw=write -ioengine=libaio -bs=256k -size=200G -numjobs=4 -runtime=1000 -group_reporting -name=test -filename=/data/test
  • 读IOPS
fio -direct=1 -iodepth=32 -rw=randread  -ioengine=libaio -bs=4k -size=200G -numjobs=4 -runtime=1000 -group_reporting -name=test -filename=/data/test
  • 写IOPS
fio -direct=1 -iodepth=32 -rw=randwrite -ioengine=libaio -bs=4k -size=200G -numjobs=4 -runtime=1000 -group_reporting -name=test -filename=/data/test

网络

iperf3

安装

yum -y install iperf3

下载地址:https://iperf.fr/iperf-download.php

参数说明

参数 说明
-c 客户端模式
-s 服务端模式
-p 指定端口号
-d 打印调试信息
-P 多线程
-u 使用udb
-t 测试时间
-b 带宽
-R 双向测试

使用

  • 基本使用
# 服务端
iperf3 -s
# 客户端
iperf3 -c 10.23.219.49
  • 在tcp在100m带宽3个线程下双向测试10秒
iperf3 -c 10.23.219.49 -i -d -P 3 -R -t 10 -b 100M
  • tcp测试
iperf3 -c 10.23.219.49 -R -P 10
  • udp测试

侧重于看丢包

iperf3 -c 10.23.219.49 -u -b 10M

ethr

微软出的一个综合网络测试工具https://github.com/Microsoft/Ethr

参数

参数 说明
-m x 表示Ethr作为外部客户端模式与共它服务端对接
-c 表示作为客户端模式连接服务端与iperf类似
-t 表示测试类型 如TCP新建:c、TCP带宽:b、TCP延迟:l
-n 表示并发会话/线程数据0表示采用当前CPU数量
-d 表示测试时长默认10s、0表示不限时长测试

erhr使用

# 服务端
ethr -s -ui -port 9999
# 客户端

ethr -c 192.168.1.1

-ui 开启一个文本界面

  • tcp带宽测试
ethr -c 10.23.219.49 -t b -p tcp -n 0 -d 0
  • tcp新建测试
ethr -c 10.23.219.49 -t c -p tcp -n 0 -d 0
  • tcp 延迟测试
ethr -c 10.23.219.49 -t l -p tcp -n 0 -d 0
  • udp pps测试
ethr -c 10.23.219.49 -t p -p udp -n 0 -d 0

web服务测试

ab(apachebench)

ab是apachebench的缩写最开始用来测试apache httpd的也可以用来测试其他web服务器

ab安装

yum -y install httpd-tools
  • 测试
ab -c 10 -n 10 http://www.baidu.com/
  • -c 次数

  • -n 并发数

综合测试

sysbench

sysbench是个综合测试工具包括cpu硬盘数据等

安装sysbench

yum install -y sysbench

使用sysbench

  • 测试cpu
sysbench --test=cpu --cpu-max-prime=20000 run
  • 测试内存
sysbench --test=memory run
  • 测试io
sysbench --test=fileio --file-test-mode=seqwr run
  • 测试mysql
# 准备数据
sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-db=test --db-driver=mysql --tables=10 --table-size=1000 --time=10 prepare

# 执行测试
sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-db=test --db-driver=mysql --tables=10 --table-size=1000 --time=10 run

# 清理
sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-db=test --db-driver=mysql --tables=10 --table-size=1000 --time=10 cleanup

/usr/share/sysbench/下有很多测试脚本,根据测试需要填写,可以使用help命令查看参数,–help查看测试项的参数

k8s

  • kubemark
  • testkube

参考资料

https://mp.weixin.qq.com/s?src=11&timestamp=1665469357&ver=4097&signature=UHpleVGTVCM4lwywMQ3B9xfQXA0H5tOi8Ju3nw9YxPQNHo9KazyAmpeLLBvXOFJh9O5OPzrsxoVkF5SCso0kIu9HlAD5EuZ9tffPaTfbVBn0QLf8h0PURQoTCtHOxjkK&new=1

https://linuxhint.com/use-sysbench-for-linux-performance-testing/