- 压测目的
- 确定数据库的稳定性和可靠性
- 确定数据库在高并发情况下的稳定性和可靠性,保证系统在用户访问量激增时仍能正常运行。
- 通过压测结果,查找系统中的瓶颈和性能问题,并及时优化,提高系统的吞吐量和响应速度。
- 验证系统的容量和扩展性,为后续的系统升级和扩展提供参考。
- 测试数据库的性能指标
- 响应时间:测试数据库在不同负载下的响应时间,包括平均响应时间、最大响应时间、最小响应时间等。
- 吞吐量:测试数据库在不同负载下的吞吐量,即每秒钟能够处理的请求数量。
- 并发数:测试数据库在不同负载下的并发请求数量,即同时处理的请求数量。
- 错误率:测试数据库在不同负载下的错误率,即请求失败的比例。
- 资源利用率:测试数据库在不同负载下的资源利用率,包括CPU利用率、内存利用率、磁盘IO利用率等。
- 评估数据库的扩展性和容量
- 通过模拟高并发场景,验证数据库的扩展性和容量是否满足需求。
- 在不同负载下,观察数据库的性能表现,确定系统的瓶颈和优化方向。
- 确定数据库的最大承载量,为系统的上线提供参考依据。
- 压测环境
数据库类型和版本
- 数据库类型:TIDB
- 版本:v6.1.2
- 操作系统类型和版本:
CentOS7.9.2009
内存:8G
CPU核心数:2
- 压测工具和版本:
sysbench1.0.20
- 压测流程
- 数据库基准测试
通过以下步骤进行:
1. 设计测试用例:根据实际场景,设计不同的测试用例,包括读写操作、并发操作、事务处理等。
2. 配置测试环境:搭建测试环境,包括数据库服务器、测试工具、网络等。
3. 运行测试:按照测试用例,使用测试工具进行测试,并记录测试结果。
4. 分析测试结果:对测试结果进行分析,找出性能瓶颈,优化数据库配置和应用程序代码。
- 压力测试
- 压力测试需要在模拟高负载的情况下对数据库进行测试,以验证其性能和稳定性。
- 压力测试需要在不同的负载下进行,例如低负载、中负载、高负载等,以确定数据库的性能极限和瓶颈。
- 压力测试的结果需要进行分析和报告,以便进行优化和改进。可以使用工具如Grafana等进行数据可视化和分析。
- 容量测试
容量测试是测试数据库在高负载情况下的表现,主要包括以下步骤:
1. 设计测试用例:确定测试的数据量、并发用户数、操作类型等参数。
2. 准备测试数据:生成符合测试用例要求的测试数据。
3. 执行测试:使用压测工具模拟高并发场景进行测试。
4. 分析结果:根据测试结果对数据库性能进行评估和优化。
容量测试的目的是为了确定数据库在高负载情况下的性能瓶颈,并采取相应的措施进行优化,以确保数据库能够稳定运行。
- 压测指标
- 响应时间
并发数 | 平均响应时间 |
4 | |
8 |
- 吞吐量
并发数 | 吞吐量r/s |
4 | |
8 |
- 并发数
压测场景 | 并发数 |
只读 | |
只写 | |
读写 |
- CPU利用率
压测场景 | 并发数 | CPU利用率 |
只读 | ||
只写 | ||
读写 |
- 内存利用率
压测场景 | 并发数 | 内存利用率 |
只读 | ||
只写 | ||
读写 |
- 压测方案:
- 使用工具:sysbench
- 测试文件大小:5000000
- 测试模式:随机读写
- 压测时间:1小时
- 压测结果:qps、tps、平均延迟、负载等指标
- 压测结果示例表格:
测试环境
模式
表数
记录数
线程数
Cpu负载
内存负载
TPS
QPS
平均延时
- 压测分析
-
指标名称
指标含义
指标结果
QPS
每秒会话查询率
TPS
每秒事务查询率
线程数
并发度
平均时延
查询耗时
- 问题分析
-
问题
基于TIDB自身分析原因
响应时间过长
数据库连接池过小
并发量过大
服务器资源不足
延迟时间增加
服务器IO持续高水平
数据库连接泄露
回收机制不合理造成并发度持续增加