一次短暂生产问题

也就是前天吧,午休之后,本身要晚上要上线,DBA进行了数据库的更新,因为这张表数据量比较多,更改表中一个字段长度大小,所以dba就在生产上提前执行该操作,可是就是因为这个原因造成了我们的app首页出现问题,报系统异常。可以看到下面图片中,在这十分钟内系统都没有日志。


logo_image.png

最后在准生产上重现了该情况,的确是由于这个该表造成的,可是为什么改这张表数据就造成这种问题了,我们一直查代码,最后得到如下结果:

1:在修改表结构期间,数据库连接一直有8个连接,用show processlist命令看到,都是Waiting for table metadata lock...一直都是8个。对于这8个显示我们追查到了原因,本身设置数据库最大连接数位256,但是由于代码没有设置这个值,因此默认大小为8个。

2:锁表为什么会造成没有日志?
我们这么理解,由于数据库连接数最大只有8个,并且对于这个大表我们是做一些埋点统计的,所以访问相当频繁,碰巧这张表因为修改表结构锁表了,请求就等着表的锁释放,然后进行插入操作,所以造成其他请求进来要操作数据库的都没有数据库连接可用。造成整个系统处于假死状态,进而整个系统没有任何响应。

image.png

http://www.tuicool.com/articles/iaEJJjB

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容