PolarDB-X 进行 TP 负载测试(三)| 学习笔记

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 快速学习 PolarDB-X 进行 TP 负载测试。

开发者学堂课程【PolarDB-X 开源分布式数据库进阶课程  :PolarDB-X 进行 TP 负载测试(三 )】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1202/detail/18329


PolarDB-X 进行 TP 负载测试


四、监控和性能指标

1.QPS

第一个就是我们一直提到的 q PS 每秒查询,从数据库层面来看的话,就是一秒内执行的 SQL 语句数,它包括了增删改查这些价格。

2.TPS

tps 是每秒事务数,从数据库层面来看,它既包含了提交的事务,又包含了 rollback 回滚的事物,要区分一下 tps 它在不同语境下的含义,在数据库系统中 GPS 是每秒执行的事务数量,而在外部应用中,它可以理解成对一个页面的一次访问就产生了一 个transaction。在区块链中 tp 它又代表了产生交易的速率,所以PS在不同的语境下是有不同含义。

3.RT

RT 是相应时间,它反映了执行一个请求从开始到说到,响应数据的时候花费的总体时间,这个指标也是用户最能直观感受到的。他在实际应用中又分为客户端 rt 与服务端 rt,当网络环境越差的时候,这两个 rt 的差距也会越大,事实上这几个性能指标相互之间是有关联的,可以想象一下,假设我们刚刚运行的 bench 是一个单线程的检查,如果说每条查询的平均 rt 是1毫秒,那么也就是说在一秒内,我们可以同步的执行1000次检查,也就是说在并发数唯一的情况下,qps 是1000。那么关于这个结论我们也是可以来验证一下的,我们在历史任务列表里面来找一下,跑的线程数唯一的一个任务是今天上午10:00跑的,查看一下任务详情,可以看到它的平均时间是0.47毫秒0.47, 1000÷0.47差不多就是比2000大一点,也就是差不多是2100的。

image.png

在介绍完刚刚提到了这三个常见的指标后,再来看一看,刚才运行两次 bench 的一个对比结果,两次结果在这里我们可以勾选两项任务,点击 PS 对比,这里要注意,如果我们数据库是能启动的话,我们会观测到第一次的压缩曲线会有一个从很低的值陡增上来的斜坡,那么我们现在是经过已经提前热身过了的,所以 qPS 曲线会比较平稳,可以发现100并发的检查和50并发检查他们的平均差距很小,只有0.04毫秒。

image.png

那么又由于100并发是50的两倍,所以实际上他们的 q PS 也是啊,100也是接近了50并发的两倍就将近18万与9万多,事实上如果再继续加大并发,随着 rt 的上升,q PS 的线性增长效果也会越来越不明显,就是说随着并发的增长,PS 的增长比例会越来越低,这个线下环境大家也可以自己实验验证,很多时候在压测的时候大家会问系统只能跑到几千或者几万的 q PS 是否正常?也就是他想知道理论上的最高 q PS 值是多少?一般来说想要达到理论最高的 q PS,我们希望的是把计算资源尽可能的消耗完,通常就是表现在 CPU 的利用率上,当然根据 fold 的不同,也有一些其他的限制因素,而一般影响到 CPU 的利用率因素,它有以下几种,比如 io 包括了磁盘,io,网络等,还有共享资源的竞争锁或者阻塞队列之类的,以及其他一些依赖,一些别的依赖服务吞吐量低,造成当前节点的这个CPU利用率上不去等等情况,这些都是属于定位性能瓶颈的隐患,这里我们就不展开描述。

那么测试完之后,我们接下来再来运行一下 tpcc ,我也是提前已经导入好了数据,我们来切换一下酷选择自动判断店铺模式,可以看到是以 oo 模式来建一个 tb cc 仓库,点击校验数据它会提示所有表都存在,然后有两百个仓,且数据集完整,这个数据就完整,也就是我们之前提到的六条校验完整性的 circle 那么这个教育完整性的作用,它就在于比如可以模拟运行 VC 的过程中 kill 掉一个 cn 进程,kill 掉一个实例恢复后再来验证下数据完整性是否能只能满足,看看有没有数据丢失或者数据不一致,这些大家也可以自己去进行实验。我们接下来来跑一下50并发的 tbcc。我们到了200层,50并发运行时长,我们选择一分钟提交任务,我们来看一下设施的结果可以看到在实时输出里面会打印出各种信息,包括连接串的参数也就是说他是我们数据库的一个连接参数还有我们的并发度,仓库数,运行时长以及之前讲到的几种事物的一个混合比例。

image.png

4.饱和度

我们再来讲一讲与性能息息相关的监控指标,根据谷歌的监控指标可以分为这四类饱和度,延迟 latency 流量 traffic 错误 errors 饱和度,衡量的是资源的使用量,比如 CPU 使用率,内存使用率,iOS 使用率,还有比如任务队列的长度延迟,正如我们之前所提到的,反映了完成操作所需要的时间,比如网络延迟,i will wait,接口调用延迟,数据同步延迟等等量则衡量了防满的系统繁忙的程度,比如磁盘流量,网卡流量,核心接口的请求速率,对于一个 web 服务来说可能就会更关心请求的速率,最后是错误,这个错误它既包含了显示错误与影视错误,也就是 explicit error与 error implicit errors,比如说他可能是直接就报错了,返回了一个错误,也可能是他没有报错,但是返回了非预期的结果反映了系统,它反映了系统的当前运行状况,一般体现为当机进程 crash 准备切换核心功能错误等,


image.png

同时我们不同的角色也会关注不同的指标下,比如 dba,他可能更关注数据库的饱和度,也就是说它可以根据业务周期来对系统的性能水位进行一个评估,从而判断是否要进行扩缩容,升降配之类的操作,对于应用开发人员来说则会更关注 q PS 和 rt 这两个指标我们来看一下刚刚跑完的这个 tb cc 50并发的一个结果。可以看到在这里面可以展示出

实时的这个tp mc曲线,大家在下面可以把这个运行时间设置的长一点,看看它是否有什么波动变化,比如说会不会随运行时间变长,有一个性能衰减的情况。下面我们再调整tb cc为100个并发来试一试。

image.png

点击填充,上次运行参数设置为100个并发现,接下来要结合我们刚刚提到的几项监控指标来进行一下实际演练,比如在 Linux 系统上可以查看监控指标的命令有很多,最常见的比如 top 命令,这里我们可以看到左边是我们的 cn 进程所在的1s上面就有一个 JAVA 进程,而右边则是所在的一上面有三个满色客d进程还有就是 h top 跟 top 的功能。还有包括了 CPU,磁盘,网络,还有页的换入换出等,可以看到在 cn ecs 上是几乎没有,磁盘的读写的,但是每秒的写入量就会非常的多。那么还有一些比如通过命令来看几个特定的 CPU 和现在可以看到我们已经没有压力了,说明已经跑完了。

image.png

可以看到现在就是这个100平方的实际数值还是变化的,实际数值要高,但是他并达不到一个线性的一个效果。就像我们在刚刚的压测过程中,如果只是使用 CPU 或者 io 等机器指标,他们确实可以一定程度的反映数据库的负载,但是如果这个瓶颈是在数据库系统自身上面,比如有强烈的所冲突之类的,此时底层的硬件资源利用率就难以你来衡量数据库本身的饱和度,所以这个时候就需要数据库层面能提供更多的维度的监控指标来定位性能瓶颈。

5.监控指标

我们看看 polarDB-x 提供哪些监控指标,因为监控指标很多,这里只截图列举了一部分,由于 PolarDB-x 是计算存储分离的,所以我们的监控指标也分为计算节点和存储节点两个大类,计算节点这里有 CPU 内存使用率,逻辑GPS,物理 PS rt,物理 rt 之类的存储节点则 CPU 内存使用率,存储空间的还有8 Pro 命中率,读写次数,行数,iOS 等情况,结合以上这些节和以上这些监控信息,可以让有经验的这边或者数据库开发人员,能更容易的定位数据库的性能瓶颈,从而对当前的数据库进行优化.

现在还有多的时间,比如说刚刚同学提到的建仓是不是也是在这里建,我们完全可以切换到一个新的数据仓,选择建库模式。同样的,在这里也是可以看到,新建出来的 b test 答案,现在是一个空的数据库,那么我们来导入一下测试数据,比如我们选四张表,100万的数据量100万的数据量,然后我们发数为四,这里的并发数一般是建议为表的整数倍一到四倍,当然我们也可以多一点并发数,它就会倒得更快一点。我们可以来看看这边导入的一个情况,他就会分为多个线程去导入 sb,四张 s test 的表我们通过说也可以看到就除开ov这条语句。一共就是有八条连接在并发的导入数据,可以看到每秒大概是1万行的一个插入速度,所以导入的速度估计还要一段时间,现在只导入了1/3。那么这些具体的过程大家也可以自己在云起实验室里面体验得到,而且由于它的部署非常简单,大家在线下环境中也是可以直接直接试验的,因为云起实验室的规格比较小,只能够做到一个体验的作用,没有办法体现就是压测的实际作用.

今天讲的 polarDB-x 对进行 tp 负载测试到这里也结束了,内容主要是基于 benchmark boot 的平台进行 bench,欢迎大家后续在云起实验中里面或者自己的线下环境进行体验,有任何问题和建议也可以发在群里.

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
2月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
294 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
57 2
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
87 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
4月前
|
存储 算法 Cloud Native
【PolarDB-X列存魔法】揭秘TPC-H测试背后的性能优化秘籍!
【8月更文挑战第25天】阿里巴巴的云原生数据库PolarDB-X以其出色的性能、可靠性和扩展性闻名,在多种业务场景中广泛应用。尤其在列存储模式下,PolarDB-X针对分析型查询进行了优化,显著提升了数据读取效率。本文通过TPC-H基准测试探讨PolarDB-X列存执行计划的优化策略,包括高效数据扫描、专用查询算法以及动态调整执行计划等功能,以满足复杂查询的需求并提高数据分析性能。
123 1
|
4月前
|
关系型数据库 MySQL 分布式数据库
Polardb mysql测试
polardb 初体验,效果明显
47 0
|
4月前
|
C# Windows IDE
WPF入门实战:零基础快速搭建第一个应用程序,让你的开发之旅更上一层楼!
【8月更文挑战第31天】在软件开发领域,WPF(Windows Presentation Foundation)是一种流行的图形界面技术,用于创建桌面应用程序。本文详细介绍如何快速搭建首个WPF应用,包括安装.NET Framework和Visual Studio、理解基础概念、创建新项目、设计界面、添加逻辑及运行调试等关键步骤,帮助初学者顺利入门并完成简单应用的开发。
165 0
|
5月前
|
监控 Oracle 关系型数据库
关系型数据库Oracle恢复测试
【7月更文挑战第20天】
100 7
|
7月前
|
关系型数据库 MySQL 数据库
测试部署PolarDB-X 分布式与集中式
在本文中,作者详述了在CentOS 7.9上部署测试PolarDB-X分布式与集中式数据库的过程。PolarDB-X作为阿里云优化的分布式数据库,提供高稳定性和与MySQL的兼容性,是应对单体数据库扩展性和性能瓶颈的解决方案,同时也符合国产化需求。文章介绍了部署环境准备,包括关闭防火墙和SELinux,设置系统参数,安装Python3和Docker,以及配置MySQL客户端。接着,通过PXD工具部署了PolarDB-X的集中式和分布式版,遇到的问题包括阿里云镜像源异常导致的部署失败以及指定版本安装的困扰。最后,作者进行了初步的压力测试,并对文档完善、生态工具建设以及提供更多使用案例提出了建议。
47998 10
测试部署PolarDB-X 分布式与集中式
|
5月前
|
传感器 数据采集 存储
LabVIEW进行负载测试
LabVIEW进行负载测试
47 1
|
6月前
|
关系型数据库 MySQL 分布式数据库
PolarDB测试
在CentOS 7.9环境下,作者探索实践了PolarDB-X的分布式与集中式部署,强调了PolarDB-X的稳定性和与MySQL的高兼容性。测试涵盖Anolis OS和openEuler系统,涉及PXD工具和Kubernetes部署。部署步骤包括环境调整、Python 3、Docker和MySQL客户端的安装。在集群部署中,遇到镜像源和版本匹配问题,通过PXD解决。总结中建议官方改进文档、丰富生态工具并提供更多案例,以促进其发展。这次体验展现了PolarDB-X的技术潜力和国产数据库的重要性。
551 4