设为首页 收藏本站
查看: 785|回复: 0

[经验分享] sysbench性能压测以及mysql性能压测

[复制链接]

尚未签到

发表于 2018-10-2 11:57:58 | 显示全部楼层 |阅读模式
  sysbench性能压测以及mysql性能压测
  一、Sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于各种不同系统的参数下的数据库负载情况。
  主要测试方式
  cpu性能
  磁盘io性能
  调度程序性能
  内存分配及传输速度
  posix线程性能
  数据库性能(OLTP基准测试)
  找范围内最大素数{时间越短越好}
  不同场景下iops{越大越好}
  线程并发执行,循环响应信号量花费的时间{越少越好}
  以不同块大小传输一定的数量的数据吞吐量大小{越大越好}
  并发线程同时申请互斥锁循环一定次数花费的时间{越少越好}
  qps、tps越高越好
  目前sysbench主要支持MYSQL,pgsql,oracle 这3种数据库
  二、安装测试环境:centos6.8   mysql5.7.19
  三、安装sysbench-0.5
  源码地址https://github.com/BoobooWei/sysbench/archive/master.zip
  下载到电脑桌面,然后xshell连接服务器,下载上传软件工具
  #cd /usr/local/src/
  #yum install lrzsz -y
  #rz      #选中下载的软件进行上传
  #unzip sysbench-master.zip
  #cd sysbench-master
  #yum install -y automake libtool -y
  #./autogen.sh
  报错:autom4te: /usr/bin/m4 failed with exit status: 63
  aclocal: autom4te failed with exit status: 63
  显示版本太低了
  #查看版本信息 :yum info autoconf
  #查看路径:which autoconf
  #移除低版本的:rpm -qf /usr/bin/autoconf  rpm -e --nodeps autoconf-2.63
  #cd /usr/local/src
  #下载新版本软件:wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
  #tar -xzf autoconf-2.69.tar.gz
  #cd autoconf-2.69
  #./configure
  #make && make install
  #检查版本是否正确   autoconf -V   #显示路径还是错的
  #如果报错重新安装如果没有跳过  make uninstall   make clean
  #./configure --prefix=/usr
  #make && make install
  #autoconf -V   显示正常
  #cd /usr/local/src/sysbench-master
  #./autogen.sh  显示正常
  #./configure
  报错:cannot find MySQL libraries. If you want to compile with MySQL support,缺少mysql依赖
  # yum install mysql-devel -y
  #./configure      显示正常
  #make && make install
  四、安装mysql5.7.19
  #wget https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm
  #rpm -Uvh mysql57-community-release-el6-9.noarch.rpm
  #yum install mysql-community-server
  #service mysqld start
  #grep 'temporary password' /var/log/mysqld.log
  #mysql -uroot -p
  #输入过滤出来的密码
  #set global validate_password_policy=0;      #设置密码复杂度
  #set global validate_password_length=6;      #设置密码长度

  #ALTER USER 'root'@'localhost'>  #create database sbtest;
  #quit
  五、测试
  Mysql数据库测试
  sysbench 0.5通过一系列LUA脚本来替换之前的oltp,来模拟更接近真实的基准测试环境。这些测试脚本包含:insert.lua、oltp.lua、parallel_prepare.lua、select_random_points.lua、update_index.lua、delete.luaoltp_simple.lua、select.lua、select_random_ranges.lua、update_non_index.lua,脚本使用方式基本类似。
  sysbench 0.5默认使用sbtest库,但是需要自己手工先创建好,也可以使用--mysql-db指定,其他非默认项指定选项:
  --mysql-host
  --mysql-port
  --mysql-socket
  --mysql-user
  --mysql-password
  --mysql-db
  --mysql-ssl
  prepare
  生成表并插入数据,可使用parallel_prepare.lua脚本来并行准备数据。
  -–db-driver 服务器类型mysql | drizzle,默认为mysql
  -–mysql-table-engine 表存数引擎
  -–myisam-max-rows MyISAM表MAX_ROWS选项(用于大表)
  –-oltp-table-count 生成表数量[sbtest1、sbtest2...]
  -–oltp-table-size 生成表的行数

  -–oltp-secondary>  –-oltp-auto-inc设置ID列是否自增 on | off,默认为on --oltp-read-only=on
  --test=sysbench-0.5/sysbench/tests目录下测试脚本
  sysbench \
  --test=/root/sysbench-master/sysbench/tests/db/oltp.lua  \
  --mysql-host=localhost  \
  --mysql-port=3306  \
  --mysql-user=root  \
  --mysql-password=abc123 \
  --oltp-table-size=100000 \
  --num-threads=8 \
  --max-time=10 \
  --mysql-db=sbtest \
  --max-requests=0 \
  --oltp-test-mode=complex \
  --report-interval=1 \
  --mysql-table-engine=innodb  \
  [prepare|run|cleanup]准备/测试/清除
  六、#测试8个线程,我的测试服务器是单核1个cpu,准备
  #[root@localhost sysbench-master]# sysbench --test=/usr/local/src/sysbench-master/sysbench/tests/db/oltp.lua   --mysql-host=localhost  --mysql-port=3306  --mysql-user=root --mysql-password=abc123   --oltp-table-size=100000  --num-threads=8  --max-time=10  --mysql-db=sbtest --max-requests=0 --oltp-test-mode=complex  --report-interval=1  --mysql-table-engine=innodb prepare
  #测试
  #[root@localhost sysbench-master]# sysbench --test=/usr/local/src/sysbench-master/sysbench/tests/db/oltp.lua   --mysql-host=localhost  --mysql-port=3306  --mysql-user=root --mysql-password=abc123   --oltp-table-size=100000  --num-threads=8  --max-time=10  --mysql-db=sbtest --max-requests=0 --oltp-test-mode=complex  --report-interval=1  --mysql-table-engine=innodb run
  sysbench 1.0 (using bundled LuaJIT 2.1.0-beta2)
  Running the test with following options:
  Number of threads: 8
  Report intermediate results every 1 second(s)
  Initializing random number generator from current time
  Initializing worker threads...
  Threads started!
  [   1s] threads: 8, tps: 149.71, reads: 2204.79, writes: 613.41, response time: 164.45ms (95%), errors: 0.00, reconnects:  0.00
  [   2s] threads: 8, tps: 253.17, reads: 3543.39, writes: 1019.89, response time: 164.45ms (95%), errors: 0.00, reconnects:  0.00
  [   3s] threads: 8, tps: 270.37, reads: 3784.14, writes: 1082.47, response time: 170.48ms (95%), errors: 0.00, reconnects:  0.00
  [   4s] threads: 8, tps: 314.77, reads: 4402.71, writes: 1248.04, response time: 94.10ms (95%), errors: 0.00, reconnects:  0.00
  [   5s] threads: 8, tps: 251.90, reads: 3528.67, writes: 1008.62, response time: 137.35ms (95%), errors: 0.00, reconnects:  0.00
  [   6s] threads: 8, tps: 261.96, reads: 3670.37, writes: 1053.82, response time: 142.39ms (95%), errors: 0.00, reconnects:  0.00
  [   7s] threads: 8, tps: 309.18, reads: 4328.47, writes: 1243.71, response time: 95.81ms (95%), errors: 0.00, reconnects:  0.00
  [   8s] threads: 8, tps: 264.82, reads: 3701.52, writes: 1054.29, response time: 193.38ms (95%), errors: 0.00, reconnects:  0.00
  [   9s] threads: 8, tps: 227.02, reads: 3185.27, writes: 919.08, response time: 179.94ms (95%), errors: 0.00, reconnects:  0.00
  [  10s] threads: 8, tps: 248.11, reads: 3457.55, writes: 973.44, response time: 144.97ms (95%), errors: 0.00, reconnects:  0.00
  OLTP test statistics:
  queries performed:
  read:                            35784
  write:                           10224
  other:                           5112
  total:                           51120
  transactions:                        2556   (255.33 per sec.)
  read/write requests:                 46008  (4595.97 per sec.)
  other operations:                    5112   (510.66 per sec.)
  ignored errors:                      0      (0.00 per sec.)
  reconnects:                          0      (0.00 per sec.)
  General statistics:
  total time:                          10.1611s
  total number of events:              2556
  total time taken by event execution: 80.0554s
  Latency statistics:
  min:                                  2.88ms
  avg:                                 31.32ms
  max:                                330.98ms
  approx.  95th percentile:           137.35ms
  Threads fairness:
  events (avg/stddev):           319.5000/6.71
  execution time (avg/stddev):   10.0069/0.00
  #单核,超多线程碾压的时候试一试64和128个线程
  [root@localhost sysbench-master]# sysbench --test=/usr/local/src/sysbench-master/sysbench/tests/db/oltp.lua  --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=abc123 --oltp-table-size=10000 --num-threads=64 --max-time=30 --mysql-db=sbtest --max-requests=0 --oltp-test-mode=complex --report-interval=1 --mysql-table-engine=innodb run
  [root@localhost sysbench-master]# sysbench --test=/usr/local/src/sysbench-master/sysbench/tests/db/oltp.lua  --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=abc123 --oltp-table-size=10000 --num-threads=128 --max-time=60 --mysql-db=sbtest --max-requests=0 --oltp-test-mode=complex --report-interval=1 --mysql-table-engine=innodb run
  #清除
  #[root@localhost sysbench-master]# sysbench --test=/usr/local/src/sysbench-master/sysbench/tests/db/oltp.lua   --mysql-host=localhost  --mysql-port=3306  --mysql-user=root --mysql-password=abc123   --oltp-table-size=100000  --num-threads=8  --max-time=10  --mysql-db=sbtest --max-requests=0 --oltp-test-mode=complex  --report-interval=1  --mysql-table-engine=innodb  cleanup
  sysbench 1.0 (using bundled LuaJIT 2.1.0-beta2)
  Dropping table 'sbtest1'...
  如果是多表呢并增加表的大小,情况又会如何呢?
  [root@localhost sysbench-master]# sysbench --test=/usr/local/src/sysbench-master/sysbench/tests/db/oltp.lua --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=abc123 --oltp-tables-count=10 --oltp-table-size=100000 --num-threads=128 --max-time=60 --mysql-db=sbtest --max-requests=0 --oltp-test-mode=complex --report-interval=1 --mysql-table-engine=innodb prepare
  [root@localhost sysbench-master]# sysbench --test=/usr/local/src/sysbench-master/sysbench/tests/db/oltp.lua --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=abc123 --oltp-tables-count=10 --oltp-table-size=100000 --num-threads=130 --max-time=20 --mysql-db=sbtest --max-requests=0 --oltp-test-mode=complex --report-interval=1 --mysql-table-engine=innodb run
  CPU测试
  使用64位整数,测试计算素数直到某个最大值所需要的时间
  sysbench --test=cpu --cpu-max-prime=2000 run
  查看CPU信息方法,查看物理cpu个数

  grep "physical>
  grep "core>  grep "processor" /proc/cpuinfo | sort -u | wc -l
  在sysbench的测试中,--num-threads取值为"线程数量"即可
  线程(thread)测试
  测试线程调度器的性能。对于高负载情况下测试线程调度器的行为非常有用
  sysbench --test=threads --num-threads=64 --thread-yields=100 --thread-locks=2 run
  文件IO性能测试
  生成需要的测试文件,文件总大小5G,16个并发线程。执行完后会在当前目录下生成一堆小文件
  sysbench --test=fileio --num-threads=16 --file-total-size=5G prepare
  执行测试,指定随机读写模式:
  seqwr顺序写入
  seqrewr顺序重写
  seqrd顺序读取
  rndrd随机读取
  rndwr随机写入
  rndrw混合随机读/写
  sysbench --test=fileio --num-threads=16 --init-rng=on --file-total-size=5G --file-test-mode=rndrw run
  除测试文件
  sysbench --test=fileio --num-threads=16 --file-total-size=5G cleanup
  内存测试
  内存测试测试了内存的连续读写性能。
  sysbench --test=memory --num-threads=16 --memory-block-size=8192 --memory-total-size=1G run
  互斥锁(Mutex)测试
  测试互斥锁的性能,方式是模拟所有线程在同一时刻并发运行,并都短暂请求互斥锁X。
  sysbench --test=mutex --num-threads=16 --mutex-num=1024 --mutex-locks=10000 --mutex-loops=5000 run


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-607532-1-1.html 上篇帖子: 设置更改root密码、连接MySQL、MySQL常用的命令 下篇帖子: MySQL 索引 与 事务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表