探索BI系统搭建的必要性与AI技术的应用潜力
700
2022-05-29
对于性能问题,这边习惯将其按照范围和影响分为单点性能问题和系统级性能问题,单点性能问题大多直接转变成单SQL调优,而系统级性能问题因其复杂性往往处理起来比较费时费力,在此根据历史性能问题的处理经验总结一份套路,旨在指导大家在碰到DWS性能问题时有法可依,主要包含问卷和三阶段排查两个部分。
问卷
主要为和客户快速确认性能慢的初步信息,用来快速排除低级的非数据库服务侧的问题,并大致明确问题范围和影响:
在完成上面的问卷并明确问题范围和影响后,如果确定是整体业务性能都比历史慢且未识别出明显的业务变化,则开始后续三阶段排查。
阶段一 集群健康度
1、集群状态
集群状态异常、不均衡均会影响业务的整体运行效率,所以确定集群状态正常和均衡是整体性能稳定的首要保证。
处理方式:集群修复、集群均衡(主备切换)
集群修复:https://bbs.huaweicloud.com/blogs/detail/198733
主备切换:https://bbs.huaweicloud.com/forum/thread-140502-1-1.html
2、可服务性
在检查集群状态正常的情况下,还存在服务对外不可提供服务的可能,从而影响整体业务进度,最常见为某CN hang,所以通过建连、建表来快速确认CN、DN的基础可服务性。
处理方式:gstack保留hang实例进程栈后,重启或隔离CN/DN进行快速恢复
单节点重启或隔离: https://bbs.huaweicloud.com/forum/thread-147714-1-1.html
单实例重启或隔离: https://bbs.huaweicloud.com/forum/thread-147713-1-1.html
多CN隔离:https://bbs.huaweicloud.com/forum/thread-147718-1-1.html
3、资源瓶颈
性能问题尤其是系统级性能问题大多伴随着某类系统资源(CPU/IO/内存/网络)的瓶颈,快速检查集群的整体资源使用情况有利于快速缩小问题范围。
1、线下集群的资源使用情况使用FI Manger管理界面查看:
2、公有云集群资源使用情况使用DWS-console管理界面查看:
3、混合云集群资源使用情况可随机抽取CN/DN使用top/iostat/free初步排查资源使用情况。
处理方式:对整体的资源使用情况有大致的把握后继续进行后续排查,并在后续每个排查措施实施后,观察对应飙高资源是否回落。
阶段二 业务状态
1、烂SQL清理
处理方式:和客户沟通对执行时间长的sql进行查杀,观察其他业务和资源恢复情况,若恢复则进入对被查杀SQL的调优环节,否则继续进行后续排查
业务SQL查杀:https://bbs.huaweicloud.com/forum/thread-147712-1-1.html
2、业务阻塞点
1)长时间wait某个节点
2)长时间wait某类资源
其中等待状态含义参见:https://support.huaweicloud.com/devg2-dws/dws_0402_0863.html
部分状态举例说明:
wait node:等待其他CN/DN节点,可能为慢节点
wait io:等待读写,可能为IO问题
wait pooler:等待内部建连,可能为网络问题
acquire lock:等锁,对相同表并发操作导致
acquire lwlock:等轻量级锁,并发高导致内部
问题1:针对IO、网络等资源方面的问题参考阶段三 系统状态中处理
问题2:针对LOCK的问题参考:
锁等待场景:https://bbs.huaweicloud.com/blogs/233114
死锁的场景:https://bbs.huaweicloud.com/blogs/228840
3、业务并发
1)并发数长期维持高位
2)各CN上业务分布不均
执行多次,check整体负载及CN负载均衡
问题1:并发高(在前面明显的烂SQL已经清理的情况下)如伴随着cpu、内存等整体资源瓶颈,则需降低业务并发度并继续观察(并发值根据实际业务情况实测、压测最终明确):
CN级并发调整(max_active_statements):https://bbs.huaweicloud.com/blogs/179009
用户级并发调整:https://bbs.huaweicloud.com/forum/thread-74904-1-1.html
问题2:CN上分布不均(部分CN排队严重)
线下建议部署LVS:https://bbs.huaweicloud.com/forum/thread-145807-1-1.html
无法部署LVS和ELB的场景建议客户将应用业务分散到不同CN执行(应用指定)
4、业务排队
说明:pgxc_session_wlmstat需手动创建,请参考https://bbs.huaweicloud.com/blogs/278874
问题1:Global状态的排队多:触发全局max_active_statements阈值
问题2:Respool状态的排队多:触发资源池内存、并发限额,评估该用户使用资源合理性
触发资源池内存限额
触发资源池max_active_statements限额
触发资源池max_dop限额(仅针对简单语句)
问题3:CentralQueue状态的排队多:触发全局内存max_dynamic_memory限制,评估内存参数设置及业务使用内存情况
其中针对Global状态排队多问题:根据资源余量情况决策是否调大max_active_statements
其中针对Respool及CentralQueue类问题参考https://bbs.huaweicloud.com/blogs/222017
阶段三 系统状态
这里所说系统状态主要指系统CPU、IO、内存、网络等系统资源使用情况,导致这些系统资源不足的场景非常之多,且之间互相影响。
1、资源高(cpu/io/mem)
1)单节点资源瓶颈
分针对DWS分布式场景,单节点资源瓶颈大多为硬件、OS故障、业务倾斜导致,主要进行以下排查:
硬件、OS侧排查重点:
排查bmc日志(常见IO问题如磁盘告警、磁盘读写策略、CPU节能模式)
排查messages日志(例历史上出现过的主板故障导致CPU高)
业务侧排查重点:
排查存储倾斜:https://bbs.huaweicloud.com/blogs/183585
排查计算倾斜:https://bbs.huaweicloud.com/blogs/254845
排查Sharding业务(分布列作为过滤条件的点查)
泰山服务器有已知的网卡、内存等方面问题,需排查是否做过加固:
https://support.huawei.com/enterprise/zh/bulletins-product/ENEWS2000007743
使用top/iotop等工具明确消耗资源的进程为gaussdb进程,历史上出现过杀毒软件、ssh进程、getClientInfo进程导致CPU飙高的情况。
https://bbs.huaweicloud.com/forum/thread-74914-1-1.html
4)抓top资源业务
Top CPU消耗的业务抓取方法:
https://bbs.huaweicloud.com/forum/thread-70939-1-1.html
Top IO消耗的业务抓取方法:
https://bbs.huaweicloud.com/forum/thread-149502-1-1.html
Top内存消耗的业务抓取方法:
https://bbs.huaweicloud.com/forum/thread-110215-1-1.html
查杀方法:
https://bbs.huaweicloud.com/forum/thread-147712-1-1.html
针对单个业务导致的资源高,处理方法主要为SQL调优。
针对批量业务导致的资源高,处理方法主要为SQL调优或限并发(前提SQL已最优)。
2、网络慢
通信是分布式场景下的基础建设,承担着各节点数据交互的使命,通信效率的高低会极大影响着查询等各类业务性能的好坏。
网络慢大多体现在以下两点:
1.客户端连接满、连接慢
处理案例:https://bbs.huaweicloud.com/blogs/239471
2.集群内节点建连慢、数据交互慢
计划中Gather、Redistribute、Broadcast等通信算子耗时高
等待视图中create conn、wait pooler等状态持续时间长
通信性能问题处理方法及案例:https://bbs.huaweicloud.com/blogs/248843
小结
触发数据库性能问题的因素本就种类繁多,而在分布式场景更是这样,任何一个节点、环节、链路出现问题和瓶颈,都会因短板效应影响整个集群的性能,因此快速识别短板(阻塞点)、瓶颈点(系统资源)就成为关键,而前面说的三个阶段也是围绕这两个点进行。当然,也并不是所有场景都需要严格按照一二三的顺序来排查,可以根据实际情况调整排查顺序并且可能需要来回校验来互相印证,希望大家能灵活运用。
EI企业智能 Gauss AP 应用性能调优 数据仓库服务 GaussDB(DWS)
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。