MySQL容量规划和性能测试
性能容量关键指标:
每秒tps,峰值tps
基础数据量,日均增长数据量
最大连接数
内存分配
IOPS
重点关注指标:
业务指标:
每秒并发用户请求、每秒订单数、用户请求响应时长
折算成性能指标:
qps、tps、rt
提出测试预期目标:
根据性能指标制定测试方案
测试结果尽可能以这些指标来表达
业务预期指标解读
读写比例:读多写少、读少写多、读写相当、统计为主、纯写入为主
存盘模式(数据可靠性要求):实时、异步、不关注
用户端的语言、字符编码(latin1、utf8、utf8mb4)
数据恢复实时性要求
日新增数据量
数据库连接方式
历史数据归档方式
业务平均、峰值指标
业务目标评估要点
服务器配置
存储引擎选择
数据库高可用方案
数据可用性方案
数据库备份方案
相应优化方案:
CPU,更换更好、更多核心的CPU
I/O,更换IOPS性能更高的设备,例如SSD,PCIE SSD
内存,增加内存,合理分配
MySQL,升级版本
选择InnoDB引擎,并且设计合适的表结构,避免锁竞争
建立性能基线
某个运行时刻的状态记录、快照
中位线 or 均线
用于和未来的状态进行对比
未来时刻产生关键事件后的新状态,作为下一个基线
https://github.com/zhishutech/mysqldba/tree/master/mysql-snapshot
系统性能指标:
CPU、内存、I/O
MySQL性能指标:
tps、qps、DMLs、响应时长、内存利用率、锁等待
业务指标
每秒业务量、每次交易时长
采集工具:
top、free、vmstat、sar、iostat、dstat、nmon、oradba.pl等
CPU:%user、%idle、%sys、%iowait
%user (<10%)、%idle (>80%)、%sys (<5%)、%iowait (<10%)
IO:tps/iops、await、svctm、%util
tps/iops (越大越好)、await (<5~10)、svctm (<5)、%util (<50%)
内存:free (free、buffers、cached)、used,以及swap
used非常高,但cached非常低,要引起关注了,可能发生内存泄漏
MySQL
tps越大越好、rt越小越好、lock越少越好、hit ratio越高越好、waits越少越好
table_locks_wait,innodb_log_waits,innodb_buffer_pool_wait_free大于0说明负载很大
压力测试
基准压力测试目的:
采购新设备,评估新设备性能
开发新项目,评估数据库容量
新系统上线前,预估/模拟数据库负载
更换数据库版本,评估性能变化
设计测试模型要点:
明确测试的核心目标、诉求
排除干扰,专注测试目的
确定测试环境
确定测试过程中的衡量和变量
保证测试结果的可重复性
设计压测模型注意事项:
只在本地加压
压测数据量小
压测时间过短
压测模式太少
压力负载过大或过小
每轮测试完毕要净化环境
MySQL数据预热:
5.6以前,执行一次mysqldump,或全量select
5.6以后,buffer bool dump & restore
常用压测工具介绍:
tpcc-mysql、sysbench、fio
测试方法,结果解读:
MySQL压力测试基准值
测试结果模板
测试报告编写
压测client、server分开
压测数据量、时长、并发量过大过小都不合适
压测结果除了TPS/TPmC,也要关注性能数据
利用压测发现性能瓶颈因素
系统性能瓶颈大概率发生在磁盘I/O层
相应的优化措施,大多数靠加索引
MySQL容量规划和性能测试的更多相关文章
- 二 mysql容量规划,性能测试
何为基线- 当前运行状态记录.快照- 用于和未来的状态进行对比- 未来时刻产生关键事件后的新状态,作为下一个基线基线数据收集,关注哪些要点- 系统负载- MySQL运行状态- 相应的业务指标1.系统& ...
- MySQL容量规划之tcpcopy应用之道
官方文档:https://github.com/session-replay-tools/mysql-replay-module tcpcopy可以将正式环境上来自客户端的请求复制一份到测试端并复现, ...
- MongoDB的容量规划及硬件配置
mongo是基于内存的数据库,应尽量将工作集中的数据全部加载到内存中,即内存应大于工作集 本文译自Chad Tindel的英文博客: http://www.mongodb.com/blog/post/ ...
- MySQL/MariaDB数据库的性能测试
MySQL/MariaDB数据库的性能测试 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据库服务衡量指标 qps: query per second(每秒支持多少查询 ...
- web容量规划
容量和性能 容量规划是基于当前性能判断系统需要什么及什么时候需要,它既是资本支出合理化证明过程也是一个技术变更; 性能调优是优化已存在的系统性能; 一般服务的升级步骤是:性能调优 -> ...
- 新上线MySQL数据库规划
新上线MySQL数据库规划1.删除test库2.删除root用户或者让root用户只可在本机登陆而对于有业务访问的数据库,在做删除root用户前需要依次确认 function.procedure.ev ...
- Hbase集群类型|集群配置|服务器选型|磁盘容量规划
HBase和Hadoop的集群类型 1.单机模式 主要用于开发工作,一台机器上运行所有的守护进程,或者一台机器运行多个虚拟机.一般用于评估和测试. 2.小型集群 20台机器以内的集群,不同的机器运行不 ...
- Elasticsearch集群规模和容量规划的底层逻辑
转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484628&idx=1&sn=666e416ae ...
- mysql 5.7.15 vs mysql 5.6.31性能测试以及不同linux内核性能比较
最近,将部分开发和测试环境的mysql升级到5.7之后,今天抽时间测试了下5.6和5.7 PK查询的性能,使用mysqlslap进行测试,测试结果发现在低配下,percona 5.6.31大约比5.7 ...
随机推荐
- Spring Boot AOP 简易操作日志管理
AOP (Aspect Oriented Programming) 面向切面编程. 业务有核心业务和边缘业务. 比如用户管理,菜单管理,权限管理,这些都属于核心业务. 比如日志管理,操作记录管理,这些 ...
- DELPHI LINUX中间件隆重发布
LINUX和WINDOWS是目前最流利的两个服务器操作系统,各种云服务商也是同时提供这2种操作系统的云服务器. 即日起,在原有WINDOWS中间件的产品基础上,再隆重推出新产品:LINUX中间件.这样 ...
- delphi 运算符重载
譬如上面的 record 可以这样声明: type TMyRec = record name: string; age: Word; class operator Grea ...
- SSM项目启动报错WEB-INF\lib\javax.servlet-api-4.0.1.jar) - jar not loaded. See Servlet Spec 3.0, section 10
错误信息: validateJarFile(D:\tomcat_ryxunit\webapps\ryx_unit\WEB-INF\lib\javax.servlet.jar) - jar not lo ...
- 新零售下的 AI智能货柜
公司有个智能货柜,通过微信扫码开门,拿货,自动扣款,挺智能的.还不错.研究一下原理,网上查了一下. 文章简介: 目前新零售风刮的蛮大,笔者进入该领域近一年,负责过无人便利店.智能货柜.智慧商超等产品, ...
- (E2E_L2)包含目录、库目录、附加包含目录、附加库目录、附加依赖项之详解【正确的目录添加方法】
VS项目中的包含目录.库目录.附加包含目录.附加库目录.附加依赖项均在"项目->属性->配置属性"下进行配置 一.具体说明如下: 1.VC++目录: 包含目录: ...
- Redis For Windows安装及密码
启动要先开启一个控制台作为服务端,启动服务,然后在重新打开一个控制台,连接服务进行操作. redis-server.exe redis.conf 重新打开一个控制台,刚开始连接服务,因为初始没有密码, ...
- Springboot项目mysql日期存储不匹配问题和在idea本地可以运行起来,但打包jar后运行报找不到mysql驱动的解决方案
修改pop.xml中scope的值,如果是具体版本号,修改为如下即可解决 <dependency> <groupId>mysql</groupId> <art ...
- ROS tf基础使用知识
博客参考:https://www.ncnynl.com/archives/201702/1306.html ROS与C++入门教程-tf-坐标变换 说明: 介绍在c++实现TF的坐标变换 概念: Co ...
- 【Linux】 新建用户并授权
一.创建新用户 1.创建一个新用户:laofan [root@localhost ~]# adduser laofan 2.为新用户创建初始化密码 [root@localhost~]# passwd ...