压测工具sysbench

2024-06-03 06:44
文章标签 工具 压测 sysbench

本文主要是介绍压测工具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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1026250

相关文章

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

CnPlugin是PL/SQL Developer工具插件使用教程

《CnPlugin是PL/SQLDeveloper工具插件使用教程》:本文主要介绍CnPlugin是PL/SQLDeveloper工具插件使用教程,具有很好的参考价值,希望对大家有所帮助,如有错... 目录PL/SQL Developer工具插件使用安装拷贝文件配置总结PL/SQL Developer工具插

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行