why

学习下sysbench 和sysbench-tpcc,做测试。


首先取sysbench1,我是取源码传到服务器的,可能有些编译问题。

cd sysbench
chmod 777 *
chmod 777 third_party/concurrency_kit/ck/*
chmod 777 third_party/cram/*
chmod 777 third_party/luajit/luajit/*
./autogen.sh    
./configure --with-pgsql
make -j4
make install

遇到的问题

  • autogen会遇到 configure.ac:61: error: possibly undefined macro: AC_PROG_LIBTOOL ,可以安装libtool yum install libtool解决
  • configure会提示缺少mysql-devel和postgre-devel,按照提示安装就行
  • make提示编译ck失败,提示luajit没编译上,注意权限。

取sysbench-tpcc2

拿postgresql做个试验3

sudo yum install postgresql-server postgresql-contrib
//按需更改data文件目录
#vim /usr/lib/systemd/system/postgresql.service
postgresql-setup initdb
systemctl start postgresql

需要建个新账号和新库

sudo -u postgres psql postgres#登录
create user sb with password 'w';# sysbench, 注意分号结尾
create database sbtest owenr sb;#建测试库
$ ./tpcc.lua --pgsql-user=postgres --pgsql-db=sbtest --time=120 --threads=56 --report-interval=1 --tables=10 --scale=100 --use_fk=0  --trx_level=RC --db-driver=pgsql prepare

提示–trx_level=RC不存在?我去掉了这个配置,注意还需要密码// 这个是不是事务配置?

 ./tpcc.lua --pgsql-user=sb --pgsql-password=‘w’ --pgsql- db=sbtest --time=120 --threads=56 --report-interval=1 --tables=10 --scale=100 --use_fk=0 --trx_level=RC --db-driver=pgsql prepare

还会提示Ident authentication failed for user “…”

可以点击看stackoverflow解决办法,或者直接改pg_hba.conf (这个文件在data目录内)把所有ident认证的地方改成md5 注意,是测试用,知道自己在做什么。4,记得重启pg

执行prepare时间还挺长,还以为卡死,抓pstack不像,看top有消耗还在跑 已经跑了一个小时了。

执行完之后执行

postgres=# select datname, pg_size_pretty(pg_database_size(datname)) as "DB_Size" from pg_stat_ database where datname = 'sbtest';
 datname | DB_Size
---------+---------
 sbtest  | 119 GB
(1 row)

按照流程,然后执行vaccumdb

 vacuumdb --username=sb --password -d sbtest -z

保守估计卡半小时

运行tpcc测试

./tpcc.lua --pgsql-user=sb --pgsql-db=sbtest --time=36000 --threads=56 --report-interval=1 --tables=10 --scale=100 --use_fk=0  --trx_level=RC --pgsql-password='w' --db-driver=pgsql run

可以看到输出

[ 22s ] thds: 56 tps: 46.00 qps: 1106.96 (r/w/o: 497.98/516.98/92.00) lat (ms,95%): 2985.89 err/s 0.00 reconn/s: 0.00
[ 23s ] thds: 56 tps: 45.00 qps: 1249.00 (r/w/o: 565.00/594.00/90.00) lat (ms,95%): 6026.41 err/s 0.00 reconn/s: 0.00
[ 24s ] thds: 56 tps: 41.00 qps: 1036.01 (r/w/o: 478.00/476.00/82.00) lat (ms,95%): 3982.86 err/s 0.00 reconn/s: 0.00
[ 25s ] thds: 56 tps: 49.00 qps: 1410.03 (r/w/o: 638.01/674.01/98.00) lat (ms,95%): 2985.89 err/s 1.00 reconn/s: 0.00

抓了下iostat 全卡在iowait上了

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.75    0.00    0.75   95.51    0.00    2.99

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
vdb               0.00     0.00  128.00 2033.00  4152.00 17348.00    19.90   119.59   55.92  169.77   48.75   0.46 100.00

或者到博客上提issue 我能收到邮件提醒。

博客评论系统折腾半天,还是放弃了。搞不定。

reference

  1. sysbench repo and build https://github.com/akopytov/sysbench#building-and-installing-from-source

  2. https://github.com/Percona-Lab/sysbench-tpcc

    1. https://www.percona.com/blog/2018/03/05/tpcc-like-workload-sysbench-1-0/
  3. 测pg 的例子<https://www.percona.com/blog/2018/06/15/tuning-postgresql-for-sysbench-tpcc/

    另外这个链接下面也有mark的一些测试repo mark callaghan这个哥们有点牛逼。

  4. https://help.ubuntu.com/stable/serverguide/postgresql.html

  5. sysbench 参数介绍 https://wing324.github.io/2017/02/07/sysbench%E5%8F%82%E6%95%B0%E8%AF%A6%E8%A7%A3/

  6. 一个sysbench-oltp lua脚本。可以改改加上mongodb ,同时也得合入 sysbench mongo driver 是个大活https://github.com/Percona-Lab/sysbench-mongodb-lua

  7. https://github.com/Percona-Lab/sysbench/tree/dev-mongodb-support-1.0

  8. https://www.percona.com/blog/2016/05/13/benchmark-mongodb-sysbench/

  9. iowait 多高算高?https://serverfault.com/questions/722804/what-percentage-of-iowait-is-considered-to-be-high