Mysql-经典实战案例(11):深度解析Sysbench压测(从入门到MySQL服务器性能验证)

引言

如何用Sysbench压测满足mysql生产运行的服务器?

Sysbench返回的压测结果如何解读?

别急,本文会教大家如何使用并且如何解读压测的结果信息,如何对mysql服务器进行压测!

一、Sysbench核心功能全景解析

1.1 工具定位与核心模块

Sysbench是集成了多种测试模式的瑞士军刀式压测工具,其模块化架构如下:

模块名称测试方向关键指标应用场景
cpu处理器计算能力Events/s算法类应用验证
memory内存吞吐性能传输速率(MB/s)缓存系统性能评估
fileio存储IO性能IOPS/延迟存储选型验证
oltp数据库事务处理TPS/QPS数据库服务器选型
threads线程调度效率上下文切换耗时高并发应用调优

1.2 下载

# 安装
yum -y install sysbench# 查看已安装版本
sysbench --version

二、全组件压测参数精解

2.1 CPU性能测试(计算密集型场景)

sysbench cpu \
--cpu-max-prime=20000 \
--threads=4 \
--time=60 \
--events=0 \
run

参数释义

  • --cpu-max-prime:质数计算范围,越大cpu计算量越大
  • --events=0:不限制事件总数,按时间执行
  • --threads:应与物理核心数一致(非逻辑线程)
  • --time=60:测试持续 60 秒

结果解析

Prime numbers limit: 20000      # 计算的质数范围
Number of threads: 1547.54            # 并发线程数CPU speed:events per second: 285.74   # 每秒完成的计算次数(越大越好)General statistics:total time: 60.0013s        # 实际总耗时(接近设定的60秒)total number of events: 92857  # 60秒内总共完成的计算次数Latency (ms):min: 2.35             # 最快一次计算耗时avg: 2.58             # 平均每次计算耗时max: 38.4346             # 最慢一次计算耗时95th percentile: 2.91 # 95%的计算耗时≤2.91ms

主要关注:CPU speed:events per second: 285.74

  • 直接体现CPU计算吞吐量,数值越高性能越强

2.2 内存性能测试(带宽验证)

sysbench memory \--memory-block-size=16K \--memory-total-size=5G \--memory-oper=write \--memory-access-mode=rnd \--threads=4 \--time=600 \run
参数推荐值依据
block-size16K匹配innodb_page_size配置(默认16K)
total-size5G需超过buffer_pool_size(通常设为物理内存75%)
threads16等于物理核心数(双路E5:2×8核)
access-modernd匹配B+树索引访问模式

结果解析

Total operations: 327680 (82003.29 per second)  总操作次数5120.00 MiB transferred (1281.30 MiB/sec)   总传输数据量(实际内存带宽(1281.30 MiB/sec))General statistics:total time:                          3.9938s  测试总耗时total number of events:              327680   等同于Total operationsLatency (ms):min:                                    0.01  最快操作耗时avg:                                    0.05  平均延迟max:                                    7.14  最慢操作耗时95th percentile:                        0.08  95%操作在0.08ms内完成sum:                                15604.66  所有操作累计耗时Threads fairness:events (avg/stddev):           81920.0000/0.00   各线程平均操作数execution time (avg/stddev):   3.9012/0.05    各线程平均耗时(3.9秒)

主要关注:(1281.30 MiB/sec) 该参数为内存带宽

2.3 存储性能测试(IO混合负载)

准备:
sysbench fileio \
--file-total-size=10G \
--file-test-mode=rndrw \
--file-extra-flags=direct \
--time=300 \
--threads=16 \
prepare测试:
sysbench fileio \
--file-test-mode=rndrw \
--time=300 \
run

参数释义

  • --file-test-mode:seqwr/seqrewr/rndrw(随机读写混合IO模式)
  • --file-total-size=10G:总测试文件大小,我这里测试的存储性能比较差,所以文件大小只测10G
  • --file-extra-flags:direct跳过OS缓存,会显著降低速度(绕过缓存),但反映真实磁盘性能
  • --threads=16:并发线程数

结果解析

在执行prepare命令的时候,通过iostat观察到磁盘的读写情况

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    0.00    2.00     0.00     0.03    32.00     0.00    1.50    0.00    1.50   1.50   0.30
sdc               0.00     0.00    0.00    1.00     0.00     0.00     8.00     0.00    1.00    0.00    1.00   1.00   0.10
sdb               0.00     0.00    0.00  582.00     0.00     9.09    32.00     0.97    1.67    0.00    1.67   1.67  97.20
sdd               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.00  585.00     0.00     9.13    31.96     0.98    1.67    0.00    1.67   1.66  97.20
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-2              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sde               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdf               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
设备状态主要负载类型利用率(%util)每秒写操作(w/s)吞吐量(wMB/s)
sdb重度负载顺序小写98.10%4136.45
dm-0重度负载顺序小写98.10%4166.49
核心指标解读
指标健康阈值问题描述
%util98.1%<70%设备已完全饱和,I/O通道拥塞
w/s413根据设备类型对于HDD偏高,SSD正常偏低
wMB/s6.45-实际带宽利用率低
avgrq-sz32KB-请求碎片化严重(理想≥128KB)
await2.38ms<5ms队列等待时间可控
avgqu-sz0.98<1存在持续排队但未严重堆积

正式测试返回值

File operations:reads/s:                      291.59writes/s:                     194.39fsyncs/s:                     622.10Throughput:read, MiB/s:                  4.56written, MiB/s:               3.04General statistics:total time:                          300.2915stotal number of events:              332743Latency (ms):min:                                    0.00avg:                                    0.90max:                                  251.7995th percentile:                        3.55sum:                               299449.80Threads fairness:events (avg/stddev):           332743.0000/0.00execution time (avg/stddev):   299.4498/0.00

关键操作指标(基准值为参考范围)

参数数值单位定义性能评价
reads/s291.59次/秒每秒文件读取操作次数中负载水平(SSD典型值:10,000-100,000次/秒,HDD:100-200次/秒)
writes/s194.39次/秒每秒文件写入操作次数存在优化空间(批量写入可提升效率)
fsyncs/s622.10次/秒每秒强制刷盘次数(同步存储介质操作)高危操作(机械硬盘fsync成本极高,易成瓶颈)
read throughput4.56MiB/s数据读取速度低速模式(SSD PCIe4.0理论值5,000MiB/s,HDD≈150MiB/s)
write throughput3.04MiB/s数据写入速度极低吞吐(提示小文件随机写场景)

延迟深度解析(单位:毫秒)

指标数值典型参考值异常状态判别
min latency0.000.01-0.1ms (SSD)直接内存操作场景(page cache命中)
avg latency0.90<1ms (NVMe SSD正常)硬件性能达标,但需关注高频fsync的影响
max latency251.79<100ms (OLTP场景要求)严重超标(可能遭遇机械寻道/坏扇区重试)
95th percentile3.55应类似avg latency存在长尾延迟(5%请求>3.55ms)
总延迟累积299,449.80无直接参考值总延迟≈测试时长(299秒≈300秒),验证系统满载运行

三、MySQL服务器专项验证(实战演练)

3.1 测试环境准备

# 创建专用测试库
mysql -uroot -p -e "CREATE DATABASE sbtest;"# 生成生产级测试数据
sysbench --threads=16 --time=600 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=密码 --mysql-db=sbtest --tables=8 --table-size=50000 oltp_read_write prepare

关键参数说明

  • --table-size:单表5万行(模拟小型数据库)
  • --tables=8:多表结构验证锁竞争(小型数据库标准)
  • oltp_read_write:测试模式:OLTP混合读写

3.2 读写测试

sysbench --threads=16 --time=30 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=密码 --mysql-db=sbtest --tables=8 --table-size=50000 oltp_read_write run

3.3 测试结果深度解析

SQL statistics:queries performed:read:                            129626write:                           37036other:                           18518total:                           185180transactions:                        9259   (308.34 per sec.)   #关键参数queries:                             185180 (6166.89 per sec.)  #关键参数ignored errors:                      0      (0.00 per sec.)reconnects:                          0      (0.00 per sec.)General statistics:total time:                          30.0266stotal number of events:              9259Latency (ms):min:                                   12.06avg:                                   51.87max:                                 3342.5095th percentile:                      108.68   #关键参数sum:                               480247.49Threads fairness:events (avg/stddev):           578.6875/4.78execution time (avg/stddev):   30.0155/0.01

性能水平

  • TPS 308.34:表示数据库每秒处理约 308 个事务,吞吐量中等,具体需结合硬件配置评估。
  • 平均延迟 51.87ms:响应时间在合理范围,但 95% 请求 ≤ 108.68ms,最大延迟 3.3 秒,可能存在偶发性能问题(如锁竞争、I/O 瓶颈)。

通过本指南,您将能够:

  1. 全面掌握Sysbench的测试能力
  2. 精准定位服务器性能瓶颈
  3. 验证MySQL服务器承载能力

最终建议:在新服务器上线、配置变更、业务量增长30%时,都应执行全量压力测试。保存历史测试数据,形成性能趋势分析,为容量规划提供数据支撑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/899062.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode终端不识别npm 无法解析npm

vscode 用以管理员打开识别npm vscode 用普通用户打开不识别npm 刚换了一台新电脑&#xff0c;寻思安装各种环境&#xff0c;一顿操作猛如虎&#xff0c;当最后一个打开vscode后&#xff0c;运行项目发现&#xff0c;新建终端>npm run dev 无法识别。 在cmd 中 打node -…

springboot body 转对象强验证属性多余属性抛错误

在Spring Boot中&#xff0c;当使用RequestBody注解来接收HTTP请求中的JSON数据并将其转换为Java对象时&#xff0c;Spring默认会忽略额外的属性。这意味着如果发送的JSON包含一些目标对象中没有定义的属性&#xff0c;Spring不会报错&#xff0c;这些额外的属性会被简单地忽略…

01. Linux嵌入式系统学习笔记(一)(linux基础指令)

一. linux基础操作指令 1. 新建文件和目录 (1) 新建文件 touch 命令&#xff1a;用于创建空文件。 touch filename.txt 如果文件已存在&#xff0c;touch 会更新文件的访问时间和修改时间。 (2) 新建目录 mkdir 命令&#xff1a;用于创建目录。 mkdir directoryname 使…

Java 列表复制与对象引用

Java 列表复制与对象引用 一、知识点 1. 对象引用的基本概念 在 Java 中&#xff0c;List<School> 这样的集合存储的并不是真正的对象&#xff0c;而是对象的“地址”&#xff08;引用&#xff09;。就好比你有一个文件柜&#xff0c;文件柜里放的不是文件本身&#x…

如何理解 Apache Iceberg 与湖仓一体(Lakehouse)?

一、什么是湖仓一体&#xff08;Lakehouse&#xff09;&#xff1f; 湖仓一体是一种融合了数据湖的灵活存储能力与数据仓库的高效分析功能的现代数据架构。它通过整合两者的优势&#xff0c;解决了传统架构的局限性&#xff0c;为企业数据处理提供了更全面的解决方案。 数据湖…

Android面试总结之Android RecyclerView:从基础机制到缓存优化

引言 在 Android 开发中&#xff0c;RecyclerView是高效展示列表数据的核心组件。其强大的性能源于独特的视图复用机制和四级缓存体系。本文将结合源码与示例&#xff0c;带你深入理解RecyclerView的工作原理与优化策略。 核心组件 RecyclerView&#xff1a;作为容器视图&am…

【鸿蒙开发】Hi3861学习笔记- TCP客户端

00. 目录 文章目录 00. 目录01. TCP概述02. TCP应用场景03. TCP和UDP比较04. TCP相关API05. TCP编程流程06. 硬件设计07. 软件设计08. 实验现象09. 附录 01. TCP概述 TCP&#xff08;Transmission Control Protocol&#xff09;是一种面向连接、可靠的传输层协议&#xff0c;旨…

【负载均衡系列】Keepalive

一、Keepalived 的核心功能 Keepalived 是一款用于实现 ​高可用(HA)​ 和 ​负载均衡 的开源工具,核心基于 ​VRRP(Virtual Router Redundancy Protocol)​ 协议,工作在网络四层(传输层)和七层(应用层)。 主要用途: 通过虚拟IP(VIP)实现服务高可用(主备切换)。…

2025-03-25 学习记录--C/C++-PTA 习题9-3 平面向量加法

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 习题9-3 平面向量加法 本题要求编写程序&#xff0c;计算两个二维平面向量的和向量。 输入格式: ❀ 输入在…

23种设计模式-桥接(Bridge)设计模式

桥接设计模式 &#x1f6a9;什么是桥接设计模式&#xff1f;&#x1f6a9;桥接设计模式的特点&#x1f6a9;桥接设计模式的结构&#x1f6a9;桥接设计模式的优缺点&#x1f6a9;桥接设计模式的Java实现&#x1f6a9;代码总结&#x1f6a9;总结 &#x1f6a9;什么是桥接设计模式…

python:music21 构建 LSTM+GAN 模型生成爵士风格音乐

keras_lstm_gan_midi.py 这是一个结合 LSTM 和 GAN 生成爵士风格音乐的完整Python脚本。这个实现包含音乐特征提取、对抗训练机制和MIDI生成功能&#xff1a; import numpy as np from music21 import converter, instrument, note, chord, stream from tensorflow.keras.mode…

go:前后端分离

1.前端代码 新建一个前端文件夹&#xff0c;在该文件夹下新建一个.html文件&#xff0c;写入自己的html代码。 前端搞定。 2.后端代码 其核心是挂载路由接受前端传来的数据核心代码如下&#xff1a; func main() { // 服务运行提示 fmt.Println("go web server is runn…

大数据学习(86)-Zookeeper去中心化调度

&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一…

JetsonNano —— 4、Windows下对JetsonNano板卡烧录刷机Ubuntu20.04版本(官方教程)

介绍 NVIDIA Jetson Nano™ 开发者套件是一款面向创客、学习者和开发人员的小型 AI 计算机。按照这个简短的指南&#xff0c;你就可以开始构建实用的 AI 应用程序、酷炫的 AI 机器人等了。 烧录刷机 1、下载 Jetson Nano开发者套件SD卡映像 解压出.img文件并记下它在计算机上的…

HTML5 拖放(Drag and Drop)学习笔记

一、HTML5 拖放简介 HTML5 拖放&#xff08;Drag and Drop&#xff09;是HTML5标准的一部分&#xff0c;允许用户抓取一个对象并将其拖动到另一个位置。拖放功能在现代网页中非常常见&#xff0c;例如文件上传、任务管理、布局调整等场景。 HTML5 拖放功能支持以下浏览器&…

文件I/O--C++的文件操作

一、打开文件&#xff0c;从文件中读取、写入文件 从文件中读取数据&#xff1a; #include<fstream> //fstream File stream:文件流 #include<iostream> //fstream包含了 iostream&#xff0c;所以这句可以省略&#xff0c;现在不能了 using namespace std;i…

Redis GEO 命令详解:轻松实现“附近的人“功能

目录 引言 Redis GEO命令概述 什么是GEO命令&#xff1f; 主要命令详解 命令应用示例 添加地点信息 查询两地距离 查询附近的城市 实现"查找附近的人"功能 功能需求与实现思路 基本需求 实现思路 命令实现方案 存储用户位置 查询附近的用户 Java代码实…

C语言贪吃蛇实现

When the night gets dark,remember that the Sun is also a star. 当夜幕降临时&#xff0c;请记住太阳也是一颗星星。 ————《去月球海滩篇》 目录 文章目录 一、《贪吃蛇》游戏介绍 二、WIN32部分接口简单介绍 2.1 控制台窗口大小设置 2.2 命令行窗口的名称的变更 2…

NIO入门

IO和NIO的区别&#xff1a; IO&#xff1a;通过流处理数据&#xff0c;仅支持阻塞IO。 核心组件&#xff1a;InputStream /OutputStream用于字节的读写&#xff0c;Reader / Writer&#xff1a;用于字符流的读写。读取过程中无法被中断&#xff0c;是阻塞式IO。 NIO:通过管道处…

基于vue.js开发的家庭装修管理系统开发与设计(源码+lw+部署文档+讲解),源码可白嫖!

摘要 本家庭装修管理系统采用B/S架构&#xff0c;数据库是MySQL&#xff0c;网站的搭建与开发采用了先进的Node.js语言进行编写&#xff0c;使用了VUE框架。该系统从两个对象&#xff1a;由管理员和用户来对系统进行设计构建。用户的功能包括&#xff1a;注册、登录、浏览首页…