0

0

mysql如何安装压力测试工具_mysql sysbench环境准备

P粉602998670

P粉602998670

发布时间:2026-03-03 04:37:26

|

803人浏览过

|

来源于php中文网

原创

sysbench安装失败主因是系统源版本过旧或缺失依赖,ubuntu/debian建议用官方源安装并验证版本≥1.0.20,centos/rhel需手动编译,mac需通过homebrew正确安装含mysql支持版本;连不上mysql需检查驱动、用户权限及socket路径;prepare卡住多因引擎、字符集不兼容,应指定innodb与utf8mb4;压测不准常因未预热buffer pool、连接数不足或mysql配置未优化。

mysql如何安装压力测试工具_mysql sysbench环境准备

sysbench 命令装不上:缺依赖或源不对

直接 apt install sysbenchyum install sysbench 失败,大概率是系统默认源没打包,或者版本太老(比如 CentOS 7 默认只有 0.4.12,不支持 MySQL 8.0+ 的认证插件)。Ubuntu 22.04+、Debian 12 这类新系统反而自带较新版本,但也要确认。

  • Ubuntu/Debian 推荐用官方源安装:sudo apt update && sudo apt install sysbench,装完检查版本:sysbench --version,低于 1.0.20 就别硬用,尤其连 MySQL 8.0 会报 Plugin caching_sha2_password could not be loaded
  • CentOS/RHEL 7/8 必须手动编译:先装依赖 sudo yum install gcc make automake autoconf libtool openssl-devel mysql-devel(RHEL 8 改用 dnf),再从 GitHub 下载 1.0.20+ 源码编译,./autogen.sh && ./configure --with-mysql && make && sudo make install
  • Mac 用户用 Homebrew:brew install sysbench,但注意它默认不带 MySQL 支持,得重装:brew uninstall sysbench && brew install sysbench --with-mysql(Homebrew 4.0+ 已弃用 --with- 参数,此时需改用 brew install sysbench 并确保 mysql-client 已存在)

连不上 MySQL:驱动、用户权限、socket 路径三处常翻车

运行 sysbench oltp_read_write --db-driver=mysql ... prepare 报错连不上,不是密码错就是驱动没认全。sysbench 本身不自带 MySQL 客户端库,靠系统已装的 libmysqlclientmysqlclient 动态链接,路径、版本、权限都得对上。

  • 确认 MySQL 客户端库已安装:mysql --version 能跑,且 ldconfig -p | grep mysql 能看到 libmysqlclient.so;若用 MariaDB,要装 mariadb-devel 而非 mysql-devel
  • MySQL 用户必须有远程访问权限(哪怕本地测试也建议用 localhost 而非 127.0.0.1,避免走 TCP 引发 socket 权限问题);执行:CREATE USER 'sbtest'@'localhost' IDENTIFIED BY 'pass'; GRANT ALL ON sbtest.* TO 'sbtest'@'localhost'; FLUSH PRIVILEGES;
  • Unix socket 路径不一致会静默失败:MySQL 配置里 socket=/var/run/mysqld/mysqld.sock,但 sysbench 默认找 /tmp/mysql.sock;加参数强制指定:--mysql-socket=/var/run/mysqld/mysqld.sock

prepare 阶段卡住或报错:引擎、字符集、大表初始化慢

sysbench oltp_common --tables=16 --table-size=1000000 prepare 执行半天没反应,或报 ERROR 1071 (42000): Specified key was too long,本质是建表语句和当前 MySQL 配置不兼容。

超能文献
超能文献

超能文献是一款革命性的AI驱动医学文献搜索引擎。

下载
  • InnoDB 行格式影响索引长度:MySQL 5.7+ 默认 ROW_FORMAT=DYNAMIC,但若表定义里显式写了 ROW_FORMAT=COMPACT,而字段含长 VARCHAR + utf8mb4,就容易超 767 字节限制;加参数绕过:--mysql-storage-engine=innodb --db-ps-mode=disable(禁用预处理,减少元数据干扰)
  • 大表初始化极慢:--table-size=1000000 生成百万行,单线程默认要几分钟;加 --threads=4 可提速,但注意这仅加速 prepare,不影响后续压测线程数
  • 字符集别硬写:sysbench 内置建表 SQL 默认用 utf8,但 MySQL 8.0+ 默认 utf8mb4;加 --mysql-db=sbtest --mysql-table-options="DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci" 显式对齐

压测结果不准:时间精度、连接池、冷启动干扰

跑完 run 看 QPS 波动极大,或和预期差几倍,往往不是 SQL 本身问题,而是环境没“稳住”。

  • MySQL 查询缓存已废弃(8.0 移除),但 InnoDB buffer pool 若没预热,头几十秒全是磁盘 IO;先跑一次短时 warmup:sysbench ... --time=30 run,再正式测
  • sysbench 默认每线程独占连接,16 线程 = 16 个长连接;MySQL 的 max_connections 至少设到 200 以上,否则中途报 Too many connections
  • 时间统计受系统调度影响:别在笔记本后台开 Chrome 测,关掉定时任务、swap(sudo swapoff -a),用 --time=300 跑够 5 分钟,避开前 10 秒的抖动
  • 输出里的 queries: 是总请求数,transactions: 是事务数,OLTP 场景下二者通常 1:1;若看到 queries 远大于 transactions,说明用了 --db-ps-mode=auto 导致预处理被反复编译,加 --db-ps-mode=disable 锁死

最麻烦的是 MySQL 自身配置没调:比如 innodb_buffer_pool_size 小于数据集,压测全程在刷脏页;或者 sync_binlog=1 强制刷盘,QPS 直接砍半。这些不在 sysbench 控制范围内,但不调就等于拿拖拉机跑赛道。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

1068

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

339

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

380

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

1967

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

379

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

1519

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

585

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

438

2024.04.29

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

48

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 2.4万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 842人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号