⭐ 推荐:社区规则条款 V1.0

如何用 sysbench 对数据库做压测并评估容量瓶颈?

GJ
GJ 资深会员 👑黑卡会员
发布于 2026-11-03 04:57 ·2 浏览 ·0 回复

学完这篇,你将学会使用 Sysbench 工具对 MySQL 数据库进行基准测试,通过模拟高并发场景找出系统的性能瓶颈。

第一步:安装 Sysbench 工具

这一步要完成 Sysbench 基准测试工具的安装,以便在 Linux 服务器上执行压测命令。

  1. CentOS/RHEL 系统:
  2. 打开终端,使用 yum 命令安装,输入以下命令并回车:

    yum install sysbench -y
    
  1. Ubuntu/Debian 系统:
  2. 使用 apt 命令安装,输入以下命令并回车:

    apt-get update && apt-get install sysbench -y
    
  1. 验证安装:
  2. 安装完成后,输入 sysbench --version,如果输出版本号(如 1.0.x),说明安装成功。

注意:安装过程可能需要联网下载依赖包,请确保服务器网络通畅。

第二步:准备测试数据

这一步要创建一个用于压测的测试数据库和测试表,数据量越大,压测结果越接近真实场景。

  1. 登录 MySQL:
  2. 使用 mysql -u root -p 命令登录数据库,输入密码后回车。

  3. 创建测试库:
  4. 在 MySQL 命令行中输入以下 SQL 语句创建一个名为 testdb 的数据库:

    CREATE DATABASE testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    
  1. 退出 MySQL:
  2. 输入 exit 退出数据库命令行。

  3. 生成测试数据:
  4. 使用 Sysbench 的 prepare 模式生成数据,请将 your_password 替换为你的数据库密码,命令如下:

    sysbench oltp_read_write prepare --db-driver=mysql --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=your_password --mysql-db=testdb --tables=10 --table-size=100000
    

参数解释:--tables=10 表示生成 10 张表,--table-size=100000 表示每张表生成 10 万行数据。

第三步:执行压测并监控

这一步要运行压测脚本,模拟并发读写操作,同时监控服务器资源(CPU、内存、IO)。

  1. 执行基准测试:
  2. 输入以下命令开始压测,设置 50 个并发线程,持续 60 秒,每 10 秒输出一次统计报告:

    sysbench oltp_read_write run --threads=50 --time=60 --report-interval=10 --db-driver=mysql --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=your_password --mysql-db=testdb
    
  1. 监控服务器资源:
  2. 在压测运行的同时,打开一个新的终端窗口,使用 top 命令监控 CPU 和内存使用率:

    top
    

使用 iostat -x 1 命令监控磁盘 IO 状态(需提前安装 sysstat 包):

    iostat -x 1
    

注意:压测期间数据库连接数会激增,请确保 MySQL 的 max_connections 参数配置足够大(建议至少 500),否则会导致连接被拒绝。

第四步:分析结果与清理环境

这一步要根据压测输出的 QPS/TPS 数据和服务器监控情况,评估数据库的容量瓶颈,并清理测试数据。

  1. 分析压测结果:
  2. 观察控制台输出的 queries:(总查询数)、transactions:(总事务数)以及 QPS(每秒查询数)、TPS(每秒事务数)。
    * QPS 越高:数据库处理查询的能力越强。
    * CPU 飙升:通常说明计算压力大,瓶颈在数据库 CPU。
    * IO 等待高:通常说明磁盘读写速度慢,瓶颈在磁盘 I/O。

  3. 清理测试数据:
  4. 测试完成后,务必运行 cleanup 命令删除生成的测试表,以免占用数据库空间:

    sysbench oltp_read_write cleanup --db-driver=mysql --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=your_password --mysql-db=testdb
    

小结

  1. 安装工具:根据系统类型使用 yum 或 apt-get 安装 Sysbench。
  2. 准备数据:使用 prepare 模式生成模拟数据,数据量大小直接影响测试准确性。
  3. 并发测试:通过调整 --threads 参数模拟不同并发量,配合 --time 控制测试时长。
  4. 瓶颈定位:结合 TPS/QPS 指标和 top/iostat 监控数据,判断瓶颈是在 CPU、内存还是磁盘 I/O。
  5. 及时清理:测试结束后务必执行 cleanup 清理测试数据。
本文转载自 GJ站长论坛,原文地址:https://www.gj0.com/thread-2713.html
转载请注明出处,版权归原作者所有。
—/ 5暂无评分
还没有评分,来打第一分吧

全部回复 0

还没有回复,来抢沙发~