执行系统基准测试和 MySQL 的效能评估
发布时间:2023-08-02 15:39:58 所属栏目:MySql教程 来源:
导读: sysbench性能压测以及mysql性能压测
一、Sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于各种不同系统的参数下的数据库负载情况。
主要测试方式
cpu性能
磁盘io性能
调度程序性
一、Sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于各种不同系统的参数下的数据库负载情况。
主要测试方式
cpu性能
磁盘io性能
调度程序性
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' IDENTIFIED BY 'abc123'; #更改密码 #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 ID列生成二级索引而不是主键 –-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 id" /proc/cpuinfo | sort -u | wc -l 查看核心数量 grep "core id" /proc/cpuinfo | sort -u | wc -l 查看线程数量 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 (编辑:聊城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐