欢迎光临
我们一直在努力

如何利用sysbench压测mysql

对于个人站长来说,评估公有云虚拟机或VPS的性能,尤其是数据库性能,是网站稳定运行的关键。sysbench是一个流行的开源基准测试工具,能够模拟高并发下的数据库操作(OLTP),帮助我们判断当前MySQL/MariaDB配置是否合理,以及硬件性能瓶颈在哪里。

本文将手把手教你如何利用sysbench进行一次标准的数据库读写压力测试。

步骤一:安装 sysbench

首先,确保你的VPS上已经安装了sysbench。主流的Linux发行版可以直接通过包管理器安装。

Ubuntu/Debian 系统:

sudo apt update
sudo apt install sysbench -y

CentOS/RHEL 系统:

如果EPEL仓库已配置,可以直接安装。

sudo yum install sysbench -y

步骤二:准备 MySQL/MariaDB 数据库环境

我们需要为测试创建一个专门的数据库和用户,以避免污染生产数据。

登录到MySQL/MariaDB命令行,执行以下SQL:

CREATE DATABASE sbtest;
CREATE USER 'sbuser'@'localhost' IDENTIFIED BY 'YourSecurePassword';
GRANT ALL PRIVILEGES ON sbtest.* TO 'sbuser'@'localhost';
FLUSH PRIVILEGES;

注意: 请将 YourSecurePassword 替换为实际的密码。

步骤三:准备测试数据 (Prepare Phase)

在执行实际压测之前,我们需要让sysbenchsbtest数据库中生成测试数据。我们以16张表,每张表10万行数据为例进行准备。

以下命令定义了连接参数、测试模式(oltp_read_write)、表大小和数量,并执行 prepare 操作。

sysbench oltp_read_write \
    --db-driver=mysql \
    --mysql-host=127.0.0.1 \
    --mysql-port=3306 \
    --mysql-user=sbuser \
    --mysql-password=YourSecurePassword \
    --mysql-db=sbtest \
    --table-size=100000 \
    --tables=16 \
    --threads=4 \
    prepare
  • –table-size=100000: 每张表包含10万行数据。
  • –tables=16: 创建16张表 (sbtest1, sbtest2, …)。
  • –threads=4: 使用4个并发线程来插入数据。

步骤四:执行压测 (Run Phase)

数据准备完成后,我们开始运行OLTP读写混合测试。本次测试我们将模拟32个并发连接,持续运行60秒,每5秒输出一次报告。

sysbench oltp_read_write \
    --db-driver=mysql \
    --mysql-host=127.0.0.1 \
    --mysql-port=3306 \
    --mysql-user=sbuser \
    --mysql-password=YourSecurePassword \
    --mysql-db=sbtest \
    --time=60 \
    --threads=32 \
    --report-interval=5 \
    run

结果解读关键指标:

压测结束后,你需要重点关注以下几行输出:

  1. transactions: 总共完成的事务数。
  2. tps (transactions per second): 每秒完成的事务数。这是衡量数据库性能最重要的指标(越高越好)。
  3. latency (95th percentile): 95%的请求的延迟时间。这个值越低,表示数据库响应越稳定、越快。

一个典型的输出片段如下:

SQL statistics:
    queries performed:
        read:                            182312
        write:                           65115
        other:                           26046
        total:                           273473
    transactions:
        executed:                      13023 (217.03 per sec.)
    latency:
        min:                                 1.32ms
        avg:                                 7.23ms
        max:                                65.11ms
        95th percentile:                    15.55ms
    response time:
        min:                                 1.32ms
        avg:                                 7.23ms
        max:                                65.11ms
        95th percentile:                    15.55ms

步骤五:清理测试数据 (Cleanup Phase)

测试完成后,使用cleanup命令删除sbtest数据库中所有sysbench生成的表。

sysbench oltp_read_write \
    --db-driver=mysql \
    --mysql-db=sbtest \
    cleanup

通过反复调整 –threads 参数,你可以观察数据库性能随并发量增加的变化趋势,从而找到VPS或数据库配置的最佳平衡点。

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » 如何利用sysbench压测mysql
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址