阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

sysbench0.5压力测试实战

141次阅读
没有评论

共计 3711 个字符,预计需要花费 10 分钟才能阅读完成。

安装方法:

下载地址:https://github.com/akopytov/sysbench

yum install automake libtool -y

unzip sysbench-0.5.zip && cd sysbench-0.5 && sh autogen.sh && ./configure && make && make install

sysbench支持以下几种测试模式:

1CPU运算性能

2、磁盘 IO 性能

3、调度程序性能

4、内存分配及传输速度

5POSIX线程性能

6、数据库性能 (OLTP 基准测试)

目前 sysbench 主要支持 mysql,drizzle,pgsql,Oracle 等几种数据库。

sysbenchCPU 基准测试

原理:采用寻找最大素数的方式来测试 CPU 的性能。

cat /proc/cpuinfo 查看 CPU 的配置情况

sysbench –test=cpu –cpu-max-prime=20000 run  结果如下图,执行耗时 39.9044

sysbench0.5 压力测试实战

sysbench命令用法:

sysbench –test=<name> help    可以查看各种帮助信息 

sysbench的文件 IO 基准测试

这里测试的是阿里云主机挂载的 SSD 磁盘,因此需要切换到 SSD 的挂载目录。

    cd /bdata/ && makedir sysbench_test && cd sysbench_test/

step1、开 16 个线程生成 2G 测试数据文件  [ 注意文件大小要超过内存的大小,这样才能测试出 IO 开销]

sysbench –test=fileio –file-total-size=4G –num-threads=16 prepare

step2、执行读写测试   [ 下面的命令是执行 混合随机读写 基准测试]

sysbench –test=fileio –file-total-size=4G –num-threads=16 –file-test-mode=rndrw –init-rng=on–max-time=300 –max-requests=0 run

sysbench0.5 压力测试实战

从上图可以看出,读 18.122G,写12.081G。请求数为6597.99/秒。吞吐量为 103Mb/ 秒。

补充:几种测试选项

seqwr  顺序写入

seqrewr    顺序重写

seqrd  顺序读取

rndrd  随机读取

rndwr  随机写入

rndrw  混合随机读 /

step3、删除测试文件

sysbench –test=fileio –file-total-size=2G cleanup

sysbenchOLTP 基准测试

OLTP基准测试模拟了一个简单的事务处理系统的工作负载。

帮助命令:sysbench –test=oltp help

step1、生成表文件

我试验过程中发现 sysbench0.5oltp测试有点不一样。必须切换到 sysbench 的安装包的路径下,不然提示缺少 lua 文件。

cd /root/sysbench-0.5/sysbench/tests/db 

sysbench –test=oltp.lua –oltp-table-size=1000000 –oltp_tables_count=10 –mysql-db=test–mysql-user=root –mysql-password=’123456′ –mysql-socket=’/tmp/mysql.sock’ –db-driver=mysql –rand-init=on prepare

 

# 这个操作会生成 test.sbtest1 表。

–oltp-table-size=1000000   表示每个测试表填充数据量为 100 万行

–rand-init=on             表示每个测试表都是用随机数据来填充的

–oltp_tables_count=10     表示会生成 10 个测试表

真实测试场景中,数据表建议不低于 10 个,单表数据量不低于 500 万行,当然了,要视服务器硬件配置而定。如果是配备了 SSD 或者 PCIE SSD 这种高 IOPS 设备的话,则建议单表数据量最少不低于 1 亿行。

step28线程测试

sysbench –test=oltp.lua –oltp-table-size=1000000 \

–mysql-db=test –mysql-user=root –mysql-password=’123456′ \

–mysql-socket=’/tmp/mysql.sock’ –db-driver=mysql –oltp-read-only=off \

–max-time=60 –num-threads=8 –report-interval=10 –rand-type=uniform \

–max-requests=0 –percentile=99 run >> /tmp/sysbench-oltp-2017-04-27.log

上面的参数说明:启动 8 个并发线程,读写模式,测试时长 60 秒。

其它参数:

–num-threads=8         表示发起 8 个并发连接

–oltp-read-only=off  表示不要进行只读测试,也就是会采用读写混合模式测试

–report-interval=10  表示每 10 秒输出一次测试进度报告

–rand-type=uniform     表示随机类型为固定模式,其他几个可选随机模式:uniform(固定 ),gaussian( 高斯 ),special( 特定的 ),pareto( 帕累托)

–max-time=120           表示最大执行时长为 120

–max-requests=0     表示总请求数为 0,因为上面已经定义了总执行时长,所以总请求数可以设定为 0;也可以只设定总请求数,不设定最大执行时长

–percentile=99         表示设定采样比例,默认是 95%,即丢弃1% 的长请求,在剩余的 99% 里取最大值

 

结果如下:

OLTP test statistics:

   queries performed:

        read:                            502936      读总数

        write:                          143696      写总数

        other:                          71848     其他操作总数 (SELECTINSERTUPDATEDELETE 之外的操作,例如 COMMIT)

        total:                          718480      总数

    transactions:                        35924  (598.65 per sec.)      总事务数 ( 每秒事务数)

    read/write requests:                646632 (10775.68 per sec.)  读写总数 ( 每秒读写次数)

    other operations:                    71848  (1197.30 per sec.)     其他操作总数 ( 每秒其他操作次数)

   ignored errors:                     0      (0.00 per sec.)

   reconnects:                         0      (0.00 per sec.)

 

General statistics:

   total time:                          60.0084s         总耗时

   total number of events:             35924              共发生多少事务数

   total time taken by event execution: 479.9595s      所有事务耗时相加 ( 不考虑并行因素)

   response time:

        min:                                  6.19ms         最小耗时

        avg:                                13.36ms         平均耗时

        max:                                187.06ms         最长耗时

        approx.  99 percentile:              30.73ms      超过 99% 平均耗时

 

Threads fairness:

   events (avg/stddev):          4490.5000/8.03

   execution time (avg/stddev):  59.9949/0.00

step3、清理上面生成的 10 个测试表

sysbench –test=oltp.lua –oltp-table-size=1000000 –oltp-tables-count=10 \

–mysql-db=test –mysql-user=root –mysql-password=’123456′ \

–mysql-socket=’/tmp/mysql.sock’ –db-driver=mysql –num-threads=8   cleanup

可以对数据库进行调优后,再使用 sysbenchOLTP进行测试,看看 TPS 是不是会有所提高。

注意:sysbench的测试只是基准测试,并不能代表实际企业环境下的性能指标。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-04/143260.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计3711字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中