老叶倡议:MySQL压力测试基准值

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS Agent(兼容OpenClaw),2核4GB
简介:

通常,我们会出于以下几个目的对MySQL进行压力测试:

1、确认新的MySQL版本性能相比之前差异多大,比如从5.6变成5.7,或者从官方版本改成Percona分支版本;
2、确认新的服务器性能是否更高,能高多少,比如CPU升级了、阵列卡cache加大了、从机械盘换成SSD盘了;
3、确认一些新的参数调整后,对性能影响多少,比如 innodb_flush_log_at_trx_commit、sync_binlog 等参数;
4、确认即将上线的新业务对MySQL负载影响多少,是否能承载得住,是否需要对服务器进行扩容或升级配置;


针对上面这几种压测的目的,相应的测试方法也有所不同。


先说第四种,需要和线上业务结合起来,这时候就需要自行开发测试工具,或者利用 tcpcopy将线上实际用户请求导向测试环境,进行仿真模拟测试。


对于前三种,我们通常采用基准测试就可以。比较常用的MySQL基准压力测试工具有 tpcc-mysqlsysbenchmysqlslap 等几个。


关于压力测试工具的使用,可以查看我之前在ORACLE技术嘉年华上的分享:MySQL压力测试经验,在这里不再细说。


基于促进同行间的交流,统一MySQL压测标准,并且可以相互分享、对比、借鉴测试结果的目的。因此老叶特别发起MySQL压力测试基准值倡议。建议大家采用以下几种压力测试基准值。




  • 倡议:MySQL压力测试建议基准值(2015试行版)


也可以访问老叶网站(http://imysql.com)查看本文附件excel文档:压力测试基准建议及数据采集模板,里面已附带了压力测试相关的数据采集点建议,压测结果整理及自动生成对比图表。欢迎各位同行拍砖提出不同的见解和补充意见,先谢过大家。




关于压力测试的其他几个方面:

1、如何避免压测时受到缓存的影响
【老叶建议】有2点建议
a、填充测试数据比物理内存还要大,至少超过 innodb_buffer_pool_size 值,不能将数据全部装载到内存中,除非你的本意就想测试全内存状态下的MySQL性能。
b、每轮测试完成后,都重启mysqld实例,并且用下面的方法删除系统cache,释放swap(如果用到了swap的话),甚至可以重启整个OS。

[yejr@imysql.com]# sync  -- 将脏数据刷新到磁盘
[yejr@imysql.com]# echo 3 > /proc/sys/vm/drop_cache  -- 清除OS Cache
[yejr@imysql.com]# swapoff -a && swapon -a



2、如何尽可能体现线上业务真实特点
【老叶建议】有2点建议
a、其实上面已经说过了,就是自行开发测试工具或者利用 tcpcopy(或类似交换机的mirror功能) 将线上实际用户请求导向测试环境,进行仿真模拟测试。


b、利用 http_load  siege 工具模拟真实的用户请求URL进行压力测试,这方面我不是太专业,可以请教企业内部的压力测试同事。



3、压测结果如何解读
【老叶建议】压测结果除了tps/TpmC指标外,还应该关注压测期间的系统负载数据,尤其是iops、iowait、svcmtm、%util、每秒I/O字节数(I/O吞吐)、事务响应时间(tpcc-mysql/sysbench 打印的测试记录中均有)。另外,如果I/O设备能提供设备级 IOPS、读写延时 数据的话,也应该一并关注。


加入两次测试的tps/TpmC结果一样的话,那么谁的 事务响应时间、iowait、svctm、%util、读写延时 更低,就表示那个测试模式有更高的性能提升空间。



4、如何加快tpcc_load加载数据的效率
【老叶建议】tpcc_load其实是可以并行加载的,一方面是可以区分 ITEMS、WAREHOUSE、CUSTOMER、ORDERS 四个维度的数据并行加载。
另外,比如最终想加载1000个 warehouse的话,也可以分开成1000个并发并行加载的。看下 tpcc_load 工具的参数就知道了:

usage: tpcc_load [server] [DB] [user] [pass] [warehouse]
OR
tpcc_load [server] [DB] [user] [pass] [warehouse] [part] [min_wh] [max_wh]
* [part]: 1=ITEMS 2=WAREHOUSE 3=CUSTOMER 4=ORDERS


本来想自己写个并行加载脚本的,后来发现万能的github上已经有人做好了,我就直接拿来用了,这是项目链接 tpcc_load_parallel.sh,加载效率至少提升10倍以上。



延伸阅读:


关于MySQL的方方面面大家想了解什么,可以直接留言回复,我会从中选择一些热门话题进行分享。 同时希望大家多多点赞和转发,多一些阅读点赞数量是老叶继续努力分享的绝佳助力,谢谢大家 :)


最后打个广告,IT从业办公室人士专属铁观音茶叶微店上线了,访问:http://yuhongli.com 获得专属优惠


文章转自老叶茶馆公众号,原文链接:
https://mp.weixin.qq.com/s/lg2grNiOOcmcfTD4ARNYpA

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
编解码 Java Maven
Java视频修改分辨率(附代码) | Java工具类
Java视频修改分辨率(附代码) | Java工具类
Java视频修改分辨率(附代码) | Java工具类
|
5月前
|
弹性计算 小程序 关系型数据库
阿里云服务器多少钱一年?整理2026年云服务器新购、续费和升级配置费用清单
阿里云2026年服务器价格出炉!轻量服务器低至38元/年,ECS新购续费同价,2核2G仅99元/年起。本文详解轻量服务器与ECS区别、配置费用、升级规则及省钱技巧,助你选对方案,轻松上云,一年省下上千元。
|
存储 边缘计算 人工智能
云计算的发展趋势及其在行业中的应用
云计算作为当今信息技术领域的关键驱动力,正在不断演进和创新。从多云模式到边缘计算,从商业到医疗,云计算在多个行业中展现了巨大的应用潜力。未来,随着技术的不断发展,云计算将继续引领着数字化转型的浪潮,为各个行业带来更多的创新和机遇。
2053 0
云计算的发展趋势及其在行业中的应用
|
存储 运维 API
源码解密协程队列和线程队列的实现原理(一)
源码解密协程队列和线程队列的实现原理(一)
447 1
|
项目管理 开发工具 git
Git项目管理——分支(三)
Git项目管理——分支(三)
226 2
|
Swift iOS开发
Swift 方法
10月更文挑战第29天
131 4
|
Python
Django开发——配置环境
Django开发——配置环境
|
JavaScript 前端开发
关于proxy的较深入研究
关于proxy的较深入研究
396 0
|
传感器
电子科大博士生杨超火了!2年实现Science+Nature一作双杀
电子科大博士生杨超火了!2年实现Science+Nature一作双杀
615 0
|
Web App开发 网络协议 安全
前端通讯协议大比拼:WebSockets和HTTP
在实时应用程序中,毋庸置疑,需要在信息可用时立即从服务器获取信息。而且,从根本上说,经典的 HTTP 请求/响应模式无法胜任这项工作。因为服务器将保持沉默,无论是否有新数据,除非或直到消费者请求更新。
341 0
前端通讯协议大比拼:WebSockets和HTTP