当前位置: 首页 > news >正文

压测工具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

相关文章:

  • 性能监控计算——封装带性能计算并上报的npm包(第三章)
  • 【TIPs】 Visual Stadio 2019 中本地误使用“git的重置 - 删除更改 -- hard”后,如何恢复?
  • 初识SDN
  • python-数据可视化(总)
  • Qt for Android
  • 代码随想录--哈希表--两数之和
  • 关于模拟信道和数字信道根本区别的探讨
  • 常用maven - jar 下载与 安装
  • 国产可视化爬虫助力AI大模型训练:精准爬取汉语词典
  • cv2函数实践-图像处理(中心外扩的最佳RoI/根据两个坐标点求缩放+偏移后的RoI/滑窗切片/VOC的颜色+调色板)
  • 顶点着色技术在AI去衣中的作用
  • OJ1230进制的转换
  • HarmonyOS鸿蒙学习笔记(27)resources目录说明
  • 前端Vue小兔鲜儿电商项目实战Day03
  • [DDR5 Jedec 4-1] 预充电命令 Precharge
  • [NodeJS] 关于Buffer
  • 《Java编程思想》读书笔记-对象导论
  • Android 架构优化~MVP 架构改造
  • Gradle 5.0 正式版发布
  • happypack两次报错的问题
  • session共享问题解决方案
  • SpiderData 2019年2月23日 DApp数据排行榜
  • Wamp集成环境 添加PHP的新版本
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 记一次和乔布斯合作最难忘的经历
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 前端面试之闭包
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 听说你叫Java(二)–Servlet请求
  • 通过几道题目学习二叉搜索树
  • 微信小程序填坑清单
  • ​secrets --- 生成管理密码的安全随机数​
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (10)ATF MMU转换表
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (bean配置类的注解开发)学习Spring的第十三天
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (八)Flask之app.route装饰器函数的参数
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (译)计算距离、方位和更多经纬度之间的点
  • (原創) 未来三学期想要修的课 (日記)
  • (转)EOS中账户、钱包和密钥的关系
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • .NET Micro Framework初体验
  • .net web项目 调用webService
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET/C# 使用反射注册事件
  • .net访问oracle数据库性能问题
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)