本文主要是介绍压测工具sysbench,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、安装
yum install gcc gcc-c++ autoconf automake make libtool bzr mysql-devel mysql libaio-devel
yum remove mariadb.x86_64 mariadb-devel.x86_64
sh install-mysql.sh --install=mysql --innodbbufferpoolsize=2G --datadir=/mysql/data --password=123321 --binlogdir=/mysql/binlog --id=1
sh install-mysql.sh --start=mysql --datadir=/mysql/data --password=123321 --slaveof=10.xx.xx.157
unzip sysbench-1.0.zip
cd sysbench-1.0/
# ./autogen.sh
./configure --prefix=/usr --mandir=/usr/share/man --without-mysql
make -j
make install
修改sysbench相关配置
sudo sh -c 'for x in /sys/class/net/eth0/queues/rx-*;do echo f>$x/rps_cpus;done'
sudo sh -c 'echo 36728>/proc/sys/net/core/rps_sock_flow_entries '
sudo sh -c 'echo 4096>/sys/class/net/eth0/queues/rx-0/rps_flow_cnt'
sudo sh -c 'for x in /sys/class/net/bond0/queues/rx-*;do echo f>$x/rps_cpus;done'
sudo sh -c 'echo 36728>/proc/sys/net/core/rps_sock_flow_entries '
sudo sh -c 'echo 4096>/sys/class/net/bond0/queues/rx-0/rps_flow_cnt'
临时调整 ulimit 65535
测试完成后,需要再系统层做一些清理的工作
shell>sync #刷新脏数据到磁盘
shell>echo 3 >/proc/sys/vm/drop_cache #清除cache
echo 3 > /proc/sys/vm/drop_caches
shell>swapoff -a && swapon -a 释放swap
3.压测过程中需要修改参数max_prepared_stmt_count默认为16382,修改为65536
4.如果是SSD硬盘的话,innodb_io_capacity和innodb_io_capacity_max两个参数也要相应调大,建议调整到50000
二、使用
sysbench fileio
--file-test-mode值说明(prepare run 必须一致):
seqwr顺序写入。
seqrewr顺序重写。
seqrd顺序读取。
rndrd随机读取。
rndwr随机写入。
rndrw混合随机读/写
--file-io-mode
sync同步
async异步
mmap
2.1CPU
sysbench --test=cpu --cpu-max-prime=2000 run
2.2内存
4C8G 带80GB数据盘1个,逻辑挂载/mysql
sysbench --db-driver=mysql --mysql-host=10.xx.xx.157 --mysql-port=3306 --mysql-user=root --mysql-password=123321 --mysql-db=mypartition --table_size=25000 --table=250 --events=0 --timeout=600 oltp_read_write prepare
sysbench --db-driver=mysql --mysql-host=10.xx.xx.157 --mysql-port=3306 --mysql-user=root --mysql-password=123321 --mysql-db=mypartition --table_size=25000 --table=250 --events=0 --timeout=600 --threads=16 --percentile=95 --report-interval=1 oltp_read_write run
sysbench --db-driver=mysql --mysql-host=10.xx.xx.157 --mysql-port=3306 --mysql-user=root --mysql-password=123321 --mysql-db=mypartition --table_size=25000 --table=250 --events=0 --timeout=600 --threads=16 --percentile=95 oltp_read_write cleanup
2.3磁盘IO
sysbench --db-driver=mysql --mysql-host=192.168.X.X --mysql-port=3306 --mysql-user=root --mysql-password=123321 --mysql-db=mypartition --table_size=800000 --table=150 --events=0 --timeout=600 oltp_read_write prepare
sysbench --db-driver=mysql --mysql-host=192.168.X.X --mysql-port=3306 --mysql-user=root --mysql-password=123321 --mysql-db=mypartition --table_size=800000 --table=150 --events=0 --timeout=600 --threads=16 --percentile=95 --report-interval=1 oltp_read_write run
sysbench --db-driver=mysql --mysql-host=192.168.X.X --mysql-port=3306 --mysql-user=root --mysql-password=123321 --mysql-db=mypartition --table_size=800000 --table=150 --events=0 --timeout=600 --threads=16 --percentile=95 oltp_read_write cleanup
2.4 线程
sysbench --test=threads --num-threads=500 --thread-yields=100 --thread-locks=4 run
2.5oltp
1,prepare阶段,生成需要的测试表
sysbench --test=oltp --mysql-table-engine=innodb --mysql-host=192.168.X.X --mysql-db=test --oltp-table-size=500000 --mysql-user=root --mysql-password=123321 prepare
2,run阶段
sysbench --num-threads=16 --test=oltp --mysql-table-engine=innodb --mysql-host=192.168.x.x --mysql-db=test --oltp-table-size=500000 --mysql-user=root --mysql-password=123321 run
3,清理测试时生成的测试表
sysbench --num-threads=16 --test=oltp --mysql-table-engine=innodb --mysql-host=192.168.x.x --mysql-db=test --oltp-table-size=500000 --mysql-user=root --mysql-password=123321 cleanup
2.6
sysbench fileio --time=120 --threads=16 --file-test-mode=seqwr --file-io-mode=async --file-num=40 --file-block-size=16384 --file-total-size=20G --file-fsync-freq=100 --file-fsync-all=off --file-fsync-end=on --file-merged-requests=0 --file-rw-ratio=1 run
sysbench fileio --time=120 --threads=16 --file-test-mode=rndrw --file-io-mode=async --file-num=40 --file-block-size=16384 --file-total-size=20G --file-fsync-freq=100 --file-fsync-all=off --file-fsync-end=on --file-merged-requests=0 --file-rw-ratio=1.5 run
三、结果解析
File operations:
reads/s: 0.00 #每秒读次数
writes/s: 20850.83#每秒写次数
fsyncs/s: 8340.85#每秒从内存向磁盘同步的次数
/io类型测试
Throughput: #吞吐量
read, MiB/s: 0.00
written, MiB/s: 325.79
/cpu类型测试
CPU speed: events per second: 4500.61 #每秒创建 events 数量
General statistics:
total time: 60.0105s # --time 执行测试的时间
total number of events: 1752371 #总共创建的 events 数量
Latency (ms):
min: 0.01 #最小执行时间
avg: 0.03
max: 10.71
95th percentile: 0.05#95% events 执行时间
sum: 59314.03#总时间
Threads fairness:# 与线程相关的指标
events (avg/stddev): 1752371.0000/0.00 # 事件(平均值/偏差)
execution time (avg/stddev): 59.3140/0.00# 执行时间(平均值/偏差)
四、其他
忘记密码:
1./etc/my.cnf的[mysqld]中添加skip-grant-tables
2.重启mysql
3.mysql
>use mysql;(使用mysql数据库)
>update user set password=password("你的密码") where user="root";
>flush privileges;
>quit
4.编辑my.cnf,去掉刚才添加的内容,然后重启MySQL
获取临时密码:
mysqld --no-defaults --user=mysql --datadir=/mysql/data --initialize
这篇关于压测工具sysbench的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!