systench使用和测试
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
,可以安装libtoolyum 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
-
sysbench repo and build https://github.com/akopytov/sysbench#building-and-installing-from-source
-
测pg 的例子<https://www.percona.com/blog/2018/06/15/tuning-postgresql-for-sysbench-tpcc/
另外这个链接下面也有mark的一些测试repo mark callaghan这个哥们有点牛逼。
-
sysbench 参数介绍 https://wing324.github.io/2017/02/07/sysbench%E5%8F%82%E6%95%B0%E8%AF%A6%E8%A7%A3/
-
一个sysbench-oltp lua脚本。可以改改加上mongodb ,同时也得合入 sysbench mongo driver 是个大活https://github.com/Percona-Lab/sysbench-mongodb-lua
-
https://github.com/Percona-Lab/sysbench/tree/dev-mongodb-support-1.0
-
https://www.percona.com/blog/2016/05/13/benchmark-mongodb-sysbench/
-
iowait 多高算高?https://serverfault.com/questions/722804/what-percentage-of-iowait-is-considered-to-be-high