GaussDB(DWS)性能问题处理套路

网友投稿 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)单节点资源瓶颈

GaussDB(DWS)性能问题处理套路

分针对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小时内删除侵权内容。

上一篇:10 年技术老兵,70个实验秘籍,带你轻松入门Linux内核
下一篇:【云驻共创】AIOps项目开发实战
相关文章