-
第二期活动——大厂面试必备:PB级数据仓库性能调优来了,它来了,没错,继第一次之后,他又来了!本次直播干货多多,老师不仅讲解理论,做了分析,还有实际操作环节,结合具体示例进行了代码级别的详细展示,分享了很多华为云自研PB级数据仓库的特色及优势,以及,结合了具体的业务场景分享了一些通用的调优手段和性能问题方法,在此分享一下观看直播的心得以及收获。首先了解了GaussDB分布式架构,这个主要是做下简单的介绍,让第一次来的小伙伴了解一下。大体架构如图所示哦:在这个节点收到业务请求之后,会做解析和规划,然后下发任务,大体有如下模块组成,这些在上面的图中都有说明介绍的,而且进行了关系的简单梳理,方便大家了解记忆,PPT做的很贴心呀。OM:运维管理模块(Operation Manager)提供日常运维、配置管理的管理接口、工具;CM:集群管理模块(CluSter Mgnager)管理和监控分布式系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行;Coordinator:整个系统的业务入口和结果返回;接收来自业务应用的访问请求;分解任务并调度任务分片的并行执行;GTM:全局事务控制器(Global Transaction Manager)提供全局事务控制所需的信息,采用多版本并发控制MVCC机制;WLM:工作负载管理器(Workloed Manager)控制系统资源的分配,防止过量业务负载,对系统的冲击导致业务拥塞和系统崩溃;Data Node:执行查询任务分片的逻辑实体。重头戏是关于如何优化的,提高效率。数据库优化的基本准则是“资源利用最大化”;而资源主要是指CPU、内存、磁盘IO、网络IO这四种资源。所有的调优手段都是围绕资源使用开展的。简而言之,就是将尽最大可能“压榨”资源,发挥资源的硬件极限性能。资源利用最大化有两层含义:1. SQL语句应当尽量高效:用最小的代价实现指定目标,比如点查询索引扫描要比顺序扫描代价更小。2. SQL语句应当充分利用资源:在没有资源瓶颈的情况下单一的SQL语句要尽量用更多的资源去执行,以此来提高效率。没错,就是这张PPT的主要内容:那么该如何进行调试优化呢?下面就是调优的基本流程了:调优可分为静态调优和执行态调优两部分哦!根据具体执行业务的不同时间可以分为两个阶段,首先是静态调优,通过定制化设计优化来达到我们想要的最佳的性能。如果未没有达到性能预期,则需要分析瓶颈原因,并通过调整参数等手段,再进行优化设计,这也就是第二种执行态调优。具体过程在老师的PPT中有详细的介绍,可以看看。最后,就是实际操作案例讲解了,以实际的实例作为分析的对象,从代码讲到应用,并做了简单的操作时间,真是很棒了!通过这次学习,学习到很多,了解了调优的基本原则,学习了调优过程和基本方法,更是通过实际操作进行了巩固,感觉收获满满,谢谢老师和小姐姐的分享!下次还来哦!
-
调优介绍 TuningKit是一款鲲鹏性能调优工具,本实践中使用Tuning Kit工具对MySQL所在系统执行系统配置全景分析、性能全景分析以及函数分析,找到性能瓶颈点,并根据分析结果进行优化修改,从而实现MySQL系统的性能增强。组网环境说明:本实践以TaiShan 200服务器(型号2280)+CentOS7.6组网举例,TuningKit在其他鲲鹏平台和操作系统上的操作类似。表格1 MySQL环境项目说明服务器TaiShan 200 服务器(型号2280)CPUKunpeng 920 4826OSCentOS 7.6应用MySQL 8.0.17调优工具TuningKit 2.2.0 表格 2 压力测试环境项目说明服务器TaiShan 200 服务器(型号2280)CPUKunpeng 920 4826OSCentOS 7.6压力测试工具Benchmark 5.0 前提条件1. 服务器和操作系统正常运行。2. PC端已经安装SSH远程登录工具。3. MySQL数据库已经安装完成,并启动。4. 压力测试环境和MySQL环境网络互通。5. 压力测试环境中Benchmark 5.0已经安装完成,并完成与MySQL数据库连接,可以进行压力测试。6. MySQL环境上TuningKit工具已经安装完成。调优思路1. 在进行调优之前,先用Benchmark工具测试MySQL在并发100个进程的性能数据。2. 使用TuningKit调优工具针对MySQL应用从函数分析、系统性能、系统配置维度进行性能分析。并根据性能分析结果得出性能瓶颈点以及优化方法。3. 针对性能瓶颈点分别进行性能优化。完成优化后,分别再用Benchmark工具测试MySQL并发100个进程的性能数据,与调优之前的性能进行对比,判断性能是否有提升。操作步骤调优前数据库性能测试Benchmark测试1. 进入Linux系统后台的BenchMark目录。cd /home/ BenchMarkSQL/run/2. 运行Benchmarksql程序。说明:参考鲲鹏社区https://support.huaweicloud.com/tstg-kunpengdbs/kunpengbenchmarksql_06_0004.html中的BenchMarkSQL测试MySQL章节,修改压测环境中Benchmark配置文件,包括数据库服务器地址、端口、数据库名称、数据库用户账号和密码等连接参数和进程并发参数loadWorkers。修改完配置文件后,执行./runDatabaseBuild.sh和./runBenchmark.sh 命令,运行benchmarksql程序,查看tpmTOTAL的值为138104 MySQL应用的热点函数性能调优热点函数分析3. 登录性能调优工具。4. 创建MySQL工程。 创建MySQL工程时,需要选择MySQL所在的服务器节点。5. 创建C/C++性能分析任务,配置参数如下图所示。 从分析结果中的热点函数列表中可以发现,MySQL运行的Top1热点函数queued_spin_lock_slowpath调用栈占用了超过一半的运行时间。 热点函数分析及优化方法热点函数分析:从C/C++性能分析的Top10函数列表中可以看出,内核热点函数queued_spin_lock_slowpath调用栈占用了超过一半的运行时间,内核函数queued_spin_lock_slowpath调用栈中,存在大量的futex_wait函数和futex_wake函数,则判断内核中的线程频繁的保持和唤醒spin lock锁,从而占用大量的运行时间。因此需要减少MySQL进程进入内核态的次数,避免spin lock被频繁保持和唤醒。优化方法:通过查看MySQL官方手册(https://dev.mysql.com/doc/refman/8.0/en/innodb-performance-spin_lock_polling.html)中关于spin_lock的介绍,,MySQL引入了innodb_spin_wait_delay参数,控制自旋锁时间,同时引入innodb_sync_spin_loops参数,控制自旋锁的循环次数。因此,可以用CPU计算资源换取MySQL进程内核态次数。即通过修改MySQL数据库配置文件,增加spin_loop的次数以及wait_delay的时间长度,防止自旋锁循环过快,尽量避免MySQL进程陷入内核态引起spin lock被频繁保持和唤醒,以此来调优MySQL性能。通过查看华为鲲鹏社区(https://support.huaweicloud.com/tngg-kunpengdbs/kunpengmysql8017_05_0015.html)中,对MySQL数据库参考调优中,将innodb_spin_wait_delay设置为180,innodb_sync_spin_loops设置为25,会达到最优性能。修改MySQL配置文件6. 修改mysql的配置文件 执行vi /etc/my.cnf 命令编辑配置文件,将tune中的参数做如下修改,防止进入系统自旋。 innodb_spin_wait_delay=180 innodb_sync_spin_loops=25 7. 执行重启MySQL命令,使配置文件生效。 /etc/init.d/mysql restart重启热点函数分析重新启动之前创建过的C/C++性能分析任务,任务执行结束后,发现spin_lock自旋热点函数被消除,函数执行时间由29.9秒降低到17.3秒。Benchmark测试8. 进入Linux系统后台的Benchmark运行目录。cd /home/ BenchMarkSQL/run/9. 执行./runBenchmark.sh命令,运行Benchmarksql程序。 查看tpmTOTAL的值由之前的138104变为当前的699282,性能提升明显。 系统配置和性能调优系统性能和配置全景分析10. 登录性能调优工具。11. 创建MySQL工程。创建MySQL工程时,需要选择MySQL所在的服务器节点。12. 创建系统性能全景分析任务,配置参数如下图所示。 13. 查看系统性能指标1. CPU利用率:从%soft参数值中,可以看到48号核的CPU服务软中断所花费时间占CPU总时间的99.71%,说明软中断集中在48号核上,需要做中断绑核优化。 2. 网络IO指标:观察网络设备统计数据,发现MySQL使用的网口每秒传输数据包和字节数超过基准值,按优化建议需要做网口中断绑核。 为了查看系统中有多少中断,以及中断在每个核上的分布情况,需要进一步执行配置全景分析。 14. 创建系统配置全景分析任务,配置参数如下图所示。 15. 检查系统硬件信息中的网卡中断NUMA绑核信息,可以看到有32个中断在numa node中随机分布。(中断NUMA绑核数据列表较多,可以下载到本地后查看) 中断绑核分析及优化方法中断绑核分析:1. 从系统性能全景分析结果,发现48号核的CPU服务软中断所花费时间占CPU总时间的99.71%,中断的分布不合理。同时网络设备统计中,网口每秒传输数据包和字节数超过基准值,按优化建议需要做网口中断绑核。2. 从配置全景分析结果中查看MySQL Server使用的网卡中断NUMA绑核信息,可以看到32个中断在numa node中是随机分布的,所以会导致多个中断都集中在某一个核上,还会有概率性跨numa_node和片的风险。优化方法: 根据中断NUMA绑核的优化建议和方法,进行网卡的中断绑核操作,将32个中断均匀绑定在一个node节点的24个核上。 使用cat /sys/class/net/enp189s0f0/device/numa_node命令查询数据库通信网卡设备靠近numa_node 2,所以可以将该网卡中断绑定在numa_node 2对应的24个核上。 网口中断绑核中断绑核方法一:手动执行绑核命令,对每个中断逐个绑核。工具的优化建议中有提供绑核步骤。中断绑核方法二:将绑核执行命令写入脚本中,循环多次,批量绑核。如下为已经写好的irq.sh绑核脚本(请参见附件),可以根据实际情况修改绑核规则。从脚本内容中可以看出将中断循环绑定到一个numa中24个核上。(Kunpeng920 4826机型一个numa_node有24个核) 16. 将irq.sh绑核脚本上传到MySQL Server目录下。1) 执行systemctl status irqbalance.service命令查询负载均衡的服务状态,如果服务状态为active状态,需要执行systemctl stop irqbalance.service命令,停止负载均衡服务。停止后,查询状态为inactive状态。 2)执行sh irq.sh enp189s0f0命令,将32个中断绑在一个node 节点的24个核上。 重启系统性能和配置全景分析任务1. 重启系统性能全景分析任务完成后,观察%soft指标(该指标表示CPU服务软中断所花费时间占CPU总时间的百分比),可以看到相比于中断绑核之前,软中断的处理分散在了绑定的核上。 2. 重启系统配置全景分析任务后,观察硬件信息的网卡指标。绑核前中断随机分配在numa节点的核上,会有概率性跨numa_node和片的风险,也可能集中占用某一个核;中断绑核后中断有序的固定在绑定的核上,中断处理分散在这些核上,提高了处理器的效率。绑核后中断分布如下所示。 Benchmark测试17. 进入Linux系统后台的Benchmark运行目录。 cd /home/ BenchMarkSQL/run/18. 执行./runBenchmark.sh命令运行Benchmarksql程序。 查看tpmTOTAL值由之前的699282变为当前的704005,性能有所提升。 调优结果分析本实践中,经过对MySQL系统进行了热点函数和中断绑核两次调优后,Benchmark测试MySQL的tpmTOTAL值从138104提升到704005,数据库性能提升410%。在进行其他应用调优时,需要根据性能调优工具采集分析的实际结果和对应的优化建议进行调优操作。具体的调优思路和调优过程,可以参考本实践。
-
去年10月24日我们发布了《鲲鹏性能调优十板斧V1.0》,发布后引发开发者及行业合作伙伴们强烈反响。今天我们发布2.0版本,在去年的基础上增加了更多的调优方法:1、单队列网卡中断散列,避免中断集中在一个core上导致系统瓶颈;2、TCP checksum算法优化,提升网络性能;3、使用NEON加速应用性能,充分发挥鲲鹏特性;4、更多java应用调优方法,java应用调优不再发愁;欢迎大家下载查阅,并留言讨论。调优的路上,期待我们更多的碰撞和交流,不断地完善调优方法!
-
(请严格按照回复示例进行回复,如回复格式不对,将不予奖励,谢谢)回复示例:华为云账户名:XXXX课程完成截图:(必须 包含课程名称、华为云账户名和完成进度条)请按照以上要求,在本课程下回帖。
-
性能调优是研发流程中的重要一环,它能够直接决定用户最终的体验,只有稳定良好的性能才能避免用户的流失。而像电商、社交等这些业务场景复杂的应用,想要做好性能调优也就越难! 作为开发和测试人员,只要掌握了性能调优,也就掌握了打造完美用户体验的“金钥匙”!那么—— 玩转应有性能调优需要具备哪些基础知识?如何通过CPTS快速发起高并发压测?如何针对复杂业务场景进行应用性能调优? 本课程以电商场景为案例,通过学习让你从基础入门到实战提升一站式掌握,系统学习应用性能调优,实现即学即用!参与打卡任务,还有机会获得《微服务架构与实践》书籍、荣耀手环等超值奖品;更有微认证8折专享优惠,get华为云官方认证,轻松为你的职业资质加分! 活动参与方式:Step1:将下图海报转发至微信群(50人以上的群)或 朋友圈(公开可见状态),保留两小时以上,并截图。转发海报请附带以下文案:已报名,限时限量免费,坐等开课~Step2:扫下方二维码添加智能应用平台小助手微信(hwpaas01),将截图发送给小助手。Step3:小助手人工审核后,会为报名成功的朋友拉进“7天玩转电商应用性能调优”学习群并发放课程领取链接呦~ 活动过程如遇大量用户参与,会导致暂时无法添加助手微信号,大家可以稍等一段时间后再试。活动中有任何疑问,请添加智能应用平台小助手(微信:hwpaas01)咨询另外,对本次活动有任何想法和建议,欢迎在评论区回帖哦~
-
华为IPVS性能调优实践,附完整测试数据!!
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
回顾中
热门标签