客户最初报障数据库cdb实例出现连接不通现象,有近1-2分钟的监控断点,同时几十秒内无法访问。
这里首先排查发现目前是从读写,报障时间点时候触发主从切换了,但主从切换的原因需要分析下。
分析当时是宿主机有拒绝请求,发现当时线程过高
从实例当时的log,看不出什么问题,排查当时连接有个飙升,怀疑是短时间的大量连接,造成mysql拒绝新连了。
但客户不是很认可是新增连接导致的切换,查看参数实例的back_log是210 , 有点小。
back_log的文档说明
https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_back_log
back_log的作用是MySql的连接数达到max_connections时,新来的请求将会被存在back_log中,而这个210,是cdb购买时候的默认值,没有优化过。
拼多多之前也发生过类似的场景,但后来要抓现场的时候,没有复现。
当时业务是否在做大表的DDL, 这个事务如果是处理不好,很容易导致连接爆涨。
了解到客户在发生异常之前没有做其他的操作,这个数据库是用于企业内部打卡的,公司规模有1万人左右,但是班次是弹性的,且那个时间点打卡的人数是比较正常的,业务压力不大。
不过发现 ALTER TABLE employee
ADD Remark
VARCHAR(512) NULL
同时看binlog,故障切换时有这个DDL在跑。说明业务还是有事务在跑。
给出解决方案:调大back_log后观察,客户暂无后续报障。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。