腾讯云TDSQL POC测试之sysbench

作者:崔军利

【前言】

sysbench是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测试,针对多个单独的表的测试,灵活修改lua脚本。

一、sysbenc编译部署

yum install autoconf automak mysql-devel libtool   下载依赖包

tar -xzvf sysbench-master.tga   解压源码

cd sysbench-master

./autogen.sh

./configure  编译

make

make install

sysbench –version //确认一下版本是否为1.1

编译完成后在sysbench-master/src/目录会产生sysbench二进制,可以将sysbench二进制文件拷贝到sysbench-master目录方便执行

Lua脚本在sysbench-master/src/lua目录

[root@tdsql1 sysbench-master]# ls

aclocal.m4      ChangeLog   config.status  COPYING     install-sh  Makefile     missing        out.sh.bak        README-WIN.txt  snap      sysbench_pkg.tgz

autogen.sh      config      configure      cpuload.sh  libtool     Makefile.am  mkinstalldirs  README.md         rpm             src       tests

autom4te.cache  config.log  configure.ac   debian      m4          Makefile.in  out.sh         README-Oracle.md  scripts         sysbench  third_party

2.检查脚本

/tdsql/tdsql_for_test/tdsql_for_student/1/sysbench-master/src/lua

vi vim oltp_common.lua

extra_table_options = extra_table_options .. " shardkey=id" (186行)没有这个分布式报错

con:query("select sleep (10)") (199)

query = "INSERT IGNORE INTO sbtest" .. table_num .. "(k, c, pad) VALUES" (207行)如果没有这个参数,表有重复会报错,有这个参数,插入重复直接不插入了  replace 直接覆盖

3.创建用户密码(管理平台创建分布数据库)

1)登录

[root@tdsql2 ~]# mysql -h 10.206.0.4  -P15002  -uyunbee -pYunbee123

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MySQL connection id is 4865

Server version: 5.7.17-11-V2.0R540D002-20191226-1152-log Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| sys                |

| sysdb              |

| test               |

| xa                 |

+--------------------+

7 rows in set (0.00 sec)

2)创建db

create database yunbee;

MySQL [(none)]> create database yunbee;

Query OK, 1 row affected (0.01 sec)

use yunbee;

MySQL [(none)]> create database yunbee;

Query OK, 1 row affected (0.01 sec)

show tables;

MySQL [yunbee]> show tables;

Empty set (0.00 sec)

4.加载数据

Sysbench装载数据相关参数介绍

--mysql-host:proxy或者db的ip地址

--mysql-port: proxy或者db的port

--mysql-user:数据库用户名

--mysql-password:数据库密码

--mysql-db:database name

--tables :装载表的个数

--table-size :每张表的行数

--db-driver:指定db driver类型为mysql(pg,mysql。。。。)

--threads:用户连接数(客户端并发连接数)

cd /tdsql/tdsql_for_test/tdsql_for_student/1/sysbench-master

[root@tdsql1 sysbench-master]# ./sysbench   ./src/lua/oltp_common.lua  --table-size=1000000 --tables=10 --threads=10  --mysql-host=10.206.0.4  --mysql-port=15002 --mysql-user=yunbee  --mysql-password=Yunbee123 --mysql-db=yunbee  --report-interval=5   prepare

sysbench 1.1.0 (using bundled LuaJIT 2.1.0-beta3)

Initializing worker threads...

Creating table 'sbtest6'...

Creating table 'sbtest1'...

Creating table 'sbtest5'...

Creating table 'sbtest7'...

Creating table 'sbtest2'...

Creating table 'sbtest4'...

Creating table 'sbtest9'...

Creating table 'sbtest3'...

Creating table 'sbtest10'...

Creating table 'sbtest8'...

Inserting 1000000 records into 'sbtest10'

Inserting 1000000 records into 'sbtest7'

Inserting 1000000 records into 'sbtest5'

Inserting 1000000 records into 'sbtest6'

Inserting 1000000 records into 'sbtest1'

Inserting 1000000 records into 'sbtest8'

Inserting 1000000 records into 'sbtest4'

Inserting 1000000 records into 'sbtest9'

Inserting 1000000 records into 'sbtest2'

Inserting 1000000 records into 'sbtest3'

Creating a secondary index on 'sbtest10'...

Creating a secondary index on 'sbtest1'...

Creating a secondary index on 'sbtest6'...

Creating a secondary index on 'sbtest8'...

Creating a secondary index on 'sbtest2'...

Creating a secondary index on 'sbtest4'...

Creating a secondary index on 'sbtest3'...

Creating a secondary index on 'sbtest9'...

Creating a secondary index on 'sbtest7'...

Creating a secondary index on 'sbtest5'...

加载完成

MySQL [yunbee]> show tables;

+------------------+

| Tables_in_yunbee |

+------------------+

| sbtest1          |

| sbtest10         |

| sbtest2          |

| sbtest3          |

| sbtest4          |

| sbtest5          |

| sbtest6          |

| sbtest7          |

| sbtest8          |

| sbtest9          |

+------------------+

10 rows in set (0.00 sec)

MySQL [yunbee]> select count(*) from sbtest1;

+----------+

| count(1) |

+----------+

|  1000000 |

+----------+

1 row in set (0.08 sec)

5.压力测试

Sysbench压测场景

--range_size :查询范围,默认值100行

--point_selects =每个事务包含point select的个数,默认值1

--simple_ranges :每个事务包含range select的个数,默认值1

--sum_ranges =每个事务包含sum() select的个数,默认值1

--order_ranges =每个事务包含order by select的个数,默认值1

--distinct_ranges =每个事务包含distinct select的个数,默认值1

--index_updates =每个事务包含index select的个数,默认值1

--non_index_updates =每个事务包含更新非索引字段的个数,默认值1

--delete_inserts =每个事务包含delete和insert的个数,默认值1

--range_selects =开启或者关闭范围查询,默认值false

--time 运行时间设为0表示不限制时间

--report-interval 运行期间日志,单位为秒

--events 最大请求数量,定义数量后可以不需要--time选项

在上面的语句后面加上 prepare,执行

在上面的语句后面加上 run,执行

在上面的语句后面加上 cleanup,执行

prepare用于准备测试需要的数据,准备完后执行run来测试,测试完成后不要忘记执行cleanup来清除测试数据

root@tdsql1 sysbench-master]# ./sysbench --threads=10 ./src/lua/oltp_read_write.lua  --table-size=1000000 --tables=10 --point_selects=2  --range_selects=2 --index_updates=2 --non_index_updates=1 --delete_inserts=1 --report-interval=1 --mysql-host=10.206.0.4  --mysql-port=15002 --mysql-user=yunbee  --mysql-password=Yunbee123 --mysql-db=yunbee --time=120 --max-requests=0  run

sysbench 1.1.0 (using bundled LuaJIT 2.1.0-beta3)

Running the test with following options:

Number of threads: 10

Report intermediate results every 1 second(s)

Initializing random number generator from current time

Initializing worker threads...

Threads started!

[ 1s ] thds: 10 tps: 42.87 qps: 435.66 (r/w/o: 103.68/236.28/95.71) lat (ms,95%): 267.41 err/s: 0.00 reconn/s: 0.00

[ 119s ] thds: 10 tps: 51.99 qps: 467.93 (r/w/o: 103.98/259.96/103.98) lat (ms,95%): 248.83 err/s: 0.00 reconn/s: 0.00

[ 120s ] thds: 10 tps: 53.00 qps: 467.98 (r/w/o: 100.00/261.99/106.00) lat (ms,95%): 240.02 err/s: 0.00 reconn/s: 0.00

SQL statistics:

queries performed:

read:                            12354  总select数据量

write:                           30885 总写请求数DML语句数量

other:                           12354

total:                           55593 总请求数(r+w+o的总和)

transactions:                        6177   (51.42 per sec.) tps 每秒完成的事物数

queries:                             55593  (462.82 per sec.) qps 每秒请求数

ignored errors:                      0      (0.00 per sec.) 每秒忽略的错误数

reconnects:                          0      (0.00 per sec.) 每秒重连数据

General statistics:

total time:                          120.1188s  压测的时间120秒

total number of events:              6177 总的事件数,一般与trancation相同

Latency (ms):

min:                                 59.95

avg:                                194.36  95%的语句平均响应时间

max:                                438.61

95th percentile:                    257.95 95%语句的平均响应时间

sum:                            1200569.67 总耗时

Threads fairness:

events (avg/stddev):           617.7000/7.94

execution time (avg/stddev):   120.0570/0.05

一般关注的指标主要有:

response time avg:平均响应时间(后面的95%的大小可以通过–percentile=98的方式去更改)。

transactions:精确的说是这一项后面的TPS,但如果使用了–skip-trx=on,这项事务数为0,需要用total number of events去除以总时间,得到tps(其实还可以分为读tps和写tps)。

(0)

相关推荐

  • 简单、易用的 MySQL 官方压测工具,建议收藏!

    作者:运维小弟 来源:https://www.toutiao.com/i6843323300764975628/ 一.MySQL自带的压力测试工具 Mysqlslap mysqlslap是mysql自 ...

  • (40条消息) 基于腾讯云的 Rust 和 WebAssembly 函数即服务

    腾讯云云函数 (SCF) 已经支持十多种编程语言和运行时框架.腾讯云最近发布的 SCF custom runtime(自定义运行时)更进一步 -- SCF 现在可以支持用任何编程语言编写的函数. 本文 ...

  • 腾讯云技术支持爱丁堡大学研究教学

    深圳讯    腾讯公司旗下云业务品牌腾讯云5月5日公布,与苏格兰爱丁堡大学签署合作备忘录,将透过云产品及云技术支持爱丁堡大学的研究及教学,以巩固该校于研究的技术发展及人才培训. 腾讯云将为爱丁堡大学的 ...

  • 从一场公益创新挑战赛,透视腾讯云 AI

    腾讯云是腾讯 AI 能力的出口,也是腾讯「科技向善」使命的一面镜子.‍‍‍‍‍‍‍ " 作者 | 肖漫 出品 | 雷锋网产业组 一个不懂编程的人,如何快速开发出一款具有 AI 能力的小程序? ...

  • 20年磨一剑,今天揭秘腾讯云的一个“秘密武器”

    文/科工力量专栏作者 陈辰 过去一年,全球约14亿学生逐渐适应在线学习:上班族几乎没有感到不适就接受了更多的工作通过线上完成. 国内疫情得到充分控制,但是大部分行业尝到了数字化的甜头.在房地产行业,人 ...

  • 腾讯云 2.1亿 中标智慧黄埔项目(附采购全文)

    4月29日,广州市公安局黄埔区分局黄埔智慧城市一期采购项目(CZ2021-0185)招标公告,预算金额:人民币213903000元.2021年5月25日中标结果发布,(主)腾讯云计算(广州)有限责任公 ...

  • 腾讯云音视频再生长

    技术融合下的新产业机会 " 作者 | 杨丽 出品 | 雷锋网产业组 雷锋网按:尽管公共交换电话网从贝尔发明电话起就已经存在了,但利用互联网方式的语音传输却是20年前才开始崛起的事物.如今,短 ...

  • docker学习14-配置 docker 阿里云/腾讯云加速器

    前言 在使用 docker 拉取 docker 仓库里面的镜像时候,国内使用官方Docker Hub仓库实在是太慢,或者出现找不到镜像的情况,需配置docker镜像下载源. 前提条件:Docker客户 ...

  • 腾讯云COS对象存储的简单使用

    叮当哥之前买了一年的腾讯云服务器,昨日偶然发现腾讯云送了叮当哥半年的cos对象存储服务器,于是就撸起袖子传了几张珍藏的大图上去,现将其上传的简单使用步骤总结一波(其它操作参加官方SDK文档API). ...

  • 3.5亿 2.1亿智慧城市,腾讯云连中两标(附采购需求)

    2021年5月26日,广东省江门市新型智慧城市(一期)建设项目成交结果公告,包1江门市新型智慧城市(一期)建设(智慧应用),由腾讯云计算(江门)有限责任公司-腾讯云计算(北京)有限责任公司-数字江门网 ...