前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【最佳实践】CDB连接数被打满了,如何快速恢复和规避?

【最佳实践】CDB连接数被打满了,如何快速恢复和规避?

原创
作者头像
开元
修改2020-04-18 21:25:16
3.4K3
修改2020-04-18 21:25:16
举报
文章被收录于专栏:开元说说开元说说

最近某W客户,新上业务逻辑把整个CDB的连接打满了,导致线上业务中断,影响公司口碑,教训极其惨重,为此本文对此进行梳理总结,让CDB连接数更加可控,确保业务稳定性。

【医治范围】针对CDB连接数打满

  1. 快速止损恢复预案
  2. 规避根治方案

1.事件回放

客户报障,一台线上CDB异常,业务访问全部异常,目前控制台无法立即执行重启,同时无法登录机器不能kill。需要腾讯云同学来救场。

遇到这种情况,我们可以迅速过检查监控,肯定有异常,果然发现连接数被打爆了(如下图),所以无法执行重启和登录机器,立刻建议客户去关闭对应的功能模块并授权腾讯云kill线程来恢复业务。

连接数
连接数
慢查询
慢查询

2.如何快速恢复?

从上面监控数据看到,业务异常持续将近30分钟,以下两件事情做到好,业务能有效止损。

1)快速知道发生了什么

监控告警及时触达。一般接数打满肯定是瞬间突增,所以这里配置告警必须异常敏感,最小周期持续告警。

建议:

当前连接数>=实例最大连接数(max_connnecntion DB参数值)

统计周期为一分钟告警,最小粒度持续告警。

告警配置demo
告警配置demo

2)根据告警,SOP恢复动作

常规方案:接到告警,务必马上立刻电话告知腾讯侧接口同学,授权腾讯侧授权kill线程权限,kill线程后观察连接数趋势以及业务恢复情况

兜底方案:kill线程无法有效降低连接数, 客户评估是否要关闭业务逻辑功能后,再次授权腾讯云侧kill线程或者强制重启机器。

3.如何有效规避?

如何对CDB连接数做到可控,保证个别业务功能连接数报复性增长,不会影响整个实例CDB连接数,降低业务异常范围。基于改造复杂程度,有应急方案和优化方案建议如下:

1)应急方案:CDB精细化分配,做到可控。

a)实例整体连接数保持在健康水位

用户可以根据需要自行调整max_connections的值。但是连接数越多对资源消耗也越高,结合实例规格和业务需求合理使用。

建议使用购买实例默认值。

b)连接数精细化控制,合理设置各个用户最大连接数。

根据业务实际使用情况,针对不同用户合理设置最大链接(max_user_connections),即使某个用户有bug连接数耗尽,也只会影响该用户功能,不影响其他功能正常使用DB.

c)相关超时时间合理设置,关闭失效连接。

根据业务情况来设置超时时间,主动断开连接。DB默认值如下建议值:

connect_timeout 10

innodb_lock_wait_timeout 60

interactive_timeout 3600

wait_timeout 3600

innodb_rollback_on_timeout OFF

2)优化方案:引入连接池来管理连接

根据业务自身情况,引入对应连接池。连接池优势:

  • 建立和释放连接会消耗CDB服务器性能,引入连接池会提升性能
  • 降低CDB服务器内存消耗
  • 动态的分配连接,满足业务需求

4.建议

1)通过DB参数配置或者引入连接池可以有效的控制连接数,但从业务梳理流来看,建议流控依次接入层,逻辑层,数据层顺序来处理。这样资源会得到更好利用,并能更及时对业务进行降维处理。

业务数据流
业务数据流

2)业务CDB分库分表来不断解耦业务逻辑,降低CDB异常给业务造成影响面。

3)新上业务进行质量压测和sql语句单元测试,保证业务稳定性。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.事件回放
  • 2.如何快速恢复?
    • 1)快速知道发生了什么
      • 2)根据告警,SOP恢复动作
      • 3.如何有效规避?
        • 1)应急方案:CDB精细化分配,做到可控。
          • a)实例整体连接数保持在健康水位
          • b)连接数精细化控制,合理设置各个用户最大连接数。
          • c)相关超时时间合理设置,关闭失效连接。
        • 2)优化方案:引入连接池来管理连接
        • 4.建议
        相关产品与服务
        云数据库 MySQL
        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档