
课程咨询: 400-996-5531
投诉建议: 400-111-8989
认真做教育 专心促就业
数据库的学习与应用在许多软件编程开发项目中都是会经常用到的一个编程技术,而本文我们就通过案例分析来简单了解一下,数据库异常问题与解决方法分享。
在遭遇异常流量高峰时,如何处理?
在实际运维场景中,客户因为业务变更或者业务高峰期会带来流量高峰,导致系统指标异常,实例CPU飙升,会话SQL处理变慢,活跃连接数增加,数据库响应异常甚至不可用。可能的原因有以下两个方面:
SQL问题:SQL执行效率慢,如对无主键、无索引的表进行查询操作时,CPU和IO被打满。
流量问题:突发的流量急剧上升,数据库容量达到瓶颈,影响正常业务。
解决方案:
针对上述问题,一般会采用两种方式来处理:
方式一:先分析异常SQL,定位后手动Kill会话
方式二:简单粗暴,重启数据库。
但面对复杂问题,传统解决方案往往无法从根本上解决,定位解决问题花费时间长,导致业务受损。针对这一挑战,业界采用限流的方式来处理,不区分业务,即不会区分限流SQL所在的库或者客户端用户,这可能导致无差别的kill会话,核心业务受损。
我们今天介绍的自治限流功能是如何应对这一潜在风险呢?
自治限流,指的是通过预先设置限流策略,自动限定执行SQL的并发度,通过小部分业务受损,保障核心业务的正常运行。具体来说,可以通过以下三个策略来进行流控:
分库、分用户设置限流范围
自治限流功能支持分库、分用户两种方式设置,客户根据业务情况,识别核心业务库和客户端用户,按需选择相应的限流方式。
按库设置:根据业务重要程度,选择对特定的一个或者多个库进行限流,默认不区分库名。
按用户名设置:根据不同用户业务差异,选择对特定的一个或者多个用户进行限流,默认不区分用户。
设置限流时间:
通过设置限流时间窗(即自治限流功能只在该时间段生效)和每次大限流时长(即自治限流生效后持续时长),方便定位SQL异常,请注意:同一天只在该时间窗内生效一次。
设置限流策略
条件1:根据业务情况,设置CPU利用率大于多少【且/或】活跃会话数大于多少,且上述条件持续时间大于多少分钟,会触发限流。
条件2:设置允许的大活跃并发数,当前活跃会话数大于大活跃会话数时,会将会话数清理到小于大活跃会话数。
完成上述设置后,自治限流功能可以自动检测客户实例异常,触发限流策略后,根据配置的限流范围和时间,自动进行分库分用户限流处理,在保证核心业务SQL稳定运行的前提下,限制引发CPU飙升的新上业务SQL,带来活跃会话数逐渐降低,CPU下降到正常值,QPS恢复到业务正常水平,数据库实例恢复正常。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。