mysql连接数过多 原因_理解MySQL数据库连接数过多的原因
使用MySQL数据库,有一个容易出现的问题——Too many connections。连接数超过max_connections就会报这个错误。MySQL为了在达到最大连接数时也能给DBA有机会操作,SUPER权限的账号能够使用第max_connections + 1个连接。我们知道,由于SUPER权限有很多特权,因此不会把这个权限给予应用的账号。但是,当应用异常或者数据库异常,达到最大连接数的时
使用MySQL数据库,有一个容易出现的问题——Too many connections。连接数超过max_connections就会报这个错误。MySQL为了在达到最大连接数时也能给DBA有机会操作,SUPER权限的账号能够使用第max_connections + 1个连接。
我们知道,由于SUPER权限有很多特权,因此不会把这个权限给予应用的账号。但是,当应用异常或者数据库异常,达到最大连接数的时候,用管理账号登录,有时候仍然会报Too many connections。此时,如果应用不能及时处理,数据库这边就很难办了。
为什么没有达到官方文档里的预期呢,super账号没有得到额外的那个连接。
在我慢慢慢慢看mysql源码的过程中,恰好看到了原因——MySQL的逻辑是,建立线程在前,验证账号在后。
建立线程的时候,还不知道来源于什么账号。MySQL是以一个新的(或者是线程池中的)线程来提供除监听以外的所有服务。
所以,当应用异常并且频繁尝试建立连接的时候,常能占据那第max_connections+1个连接。super账号由于拿不到线程,因此也是Too many connections了。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号

TechTarget
官方微博

TechTarget中国
更多推荐



所有评论(0)