多线程基准测试工具sysbench 0.5 简介

2017-01-10 10:03:51来源:作者:Linux公社人点击

一 前言

因为在准备做压力测试方面的工作,看到sysbench 目前最新的版本是0.5 ,相比之前的0.4的版本,最大的变化是 test 参数的改变,在压测MySQL时,新版本中test将取值为 lua脚本,该种方式给压测工作带来很大的灵活性。

二 安装

因为之前的博文中讲述过如何安装sysbench 故本文不做过多讲解,不过需要提示请确保当前系统中是否安装m4 autoconf automake libtool 这几个包,

如果没有则通过 yum install -y m4 autoconf automake libtool安装

获取sysbench然后安装

. /autogen .sh . /configure - -prefix = /opt/sysbench - -with -mysql - -with -mysql -includes = /opt/mysql/ include - -with -mysql -libs = /usr/lib64/mysql make andmake install安装完成之后 执行sysbench --help 查看完整的帮助。

安装完成之后 执行sysbench --help 查看完整的帮助。

三使用

之前0.5 版本test值是lua脚本,检查一下db压测可以使用那些脚本

[root@rac4 11 :32 :45 ~/sysbench/sysbench/tests/db ] # ls * .lua common .lua insert .lua oltp_simple .lua select .lua select_random_ranges .lua update_non_index .lua delete .lua oltp .lua parallel_prepare .lua select_random_points .lua update_index .lua

看看大家压测的时候用到的最典型的脚本

[root@rac4 11 :36 :32 ~/sysbench/sysbench/tests/db ] # more update_non_index .lua pathtest =string .match ( test , "(.*/)" ) or "" dofile (pathtest . . "common.lua" ) function thread_init (thread_id ) set_vars ( ) end function event (thread_id ) localtable_name localc_val localquery table_name = "sbtest" . .sb_rand_uniform (1 ,oltp_tables_count ) c_val =sb_rand_str ( "###########-###########-###########-###########-###########-###########-###########-###########-###########-###########" ) query = "UPDATE " . .table_name . . " SET c='" . .c_val . . "' WHERE id=" . .sb_rand (1 ,oltp_table_size ) rs =db_query (query ) end

如果大家会lua脚本,则可以根据自己的业务场景,简单的定制化压测脚本。

cd /root/sysbench/ /opt/sysbecn/bin/sysbench - - test = . /sysbench/tests/db/update_non_index .lua - -mysql -table -engine =innodb - -mysql -db = test - -oltp -table - size =5000000 - -mysql -user =root - -mysql -socket = /srv/my3308/run/mysql .sock - -oltp -tables -count =16 prepare /opt/sysbecn/bin/sysbench - - test = . /sysbench/tests/db/update_non_index .lua - -mysql -table -engine =innodb - -mysql -db = test - -oltp -table - size =5000000 - -mysql -user =root - -mysql -socket = /srv/my3308/run/mysql .sock - -oltp -tables -count =16 run /opt/sysbecn/bin/sysbench - - test = . /sysbench/tests/db/update_non_index .lua - -mysql -table -engine =innodb - -mysql -db = test - -oltp -table - size =5000000 - -mysql -user =root - -mysql -socket = /srv/my3308/run/mysql .sock - -oltp -tables -count =16 cleanup

四 遇到的问题

# ./autogen.sh

libtoolize 1.4+ wasn't found, exiting

# ./autogen.sh

automake 1.10.x (aclocal) wasn't found, exiting

说明需要安装 libtool , automake 的安装包

安装完上述几个包之后,我还遇到了如下错误:

libtool: link: gcc -W -Wall -Wextra -Wpointer-arith -Wbad-function-cast -Wstrict-prototypes -Wnested-externs -Winline -funroll-loops -Wundef -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wcast-align -pthread -O2 -ggdb3 -o sysbench sysbench.o sb_timer.o sb_options.o sb_logger.o db_driver.o tests/fileio/libsbfileio.a tests/threads/libsbthreads.a tests/memory/libsbmemory.a tests/cpu/libsbcpu.a tests/mutex/libsbmutex.a scripting/libsbscript.a drivers/mysql/libsbmysql.a -L/opt/mysql/lib -lmysqlclient_r scripting/lua/src/liblua.a -ldl -lrt -lm -pthread

/usr/bin/ld: cannot find -lmysqlclient_r

collect2: ld returned 1 exit status

原因是因为自己当前环境中没有安装 mysql-devel 导致没有 libmysqlclient_r.so.16 。解决方法

yum install -y mysql-devel

基于sysbench-0.5的MySQL自动化压测及分析方案 http://www.linuxidc.com/Linux/2016-10/136105.htm

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

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台