问题现象:业务后台连接数据库失败,查看数据库日志,一直报 too many connections,登陆数据库报错一样,重启数据库,登陆数据库

show processlist;

显示如下:

Id     |   User             |  Host | db     |   Command   |   Time   |   State                                                                             |   Info     |
2      |  system user   |          | NULL |   Connect      |    1245  |   Reconnecting after a failed master event read            |   NULL   |
3      |  system user   |          | NULL |   Connect      |    1235  |   Slave has read all relay log:waiting for more update   |   NULL   |
4      |  system user   |          | NULL |   Connect      |    1221  |   Waiting for an event from coordinary                          |   NULL   |
5      |  system user   |          | NULL |   Connect      |    1219  |   Waiting for an event from coordinary                          |   NULL   |
6      |  system user   |          | NULL |   Connect      |    1211  |   Waiting for an event from coordinary                          |   NULL   |
7      |  system user   |          | NULL |   Connect      |    1206  |   Waiting for an event from coordinary                          |   NULL   |

问题分析:

在本地数据库上发生过 “Waiting in connection_control plugin" 的连接延迟状态中,而应用又不断尝试新的请求,连接堆积,业务连接请求慢的问题。

问题的发生原因是由于连接异常导致 ConnectionControl 插件进行了拦截,连接用户身份验证处于 “Waiting in connectioncontrol plugin" 的连接延迟状态

解决方案:

1.登陆数据库,查看配置参数:

show variables like '%connection_control%";

   Variable_name                                                        |   Value              |
   conection_control_failed_connections_threshold  |   3                     |
   conection_control_max_connections_delay           |   2147368762   |
   conection_control_min_connections_delay           |   1000               |

2.修改配置参数,重启数据库或者杀掉业务连接进程

set global conection_control_failed_connections_threshold=0;

set global conection_control_max_connections_delay=1000;

查看配置是否生效

show variables like '%connection_control%";

   Variable_name                                                        |   Value              |
   conection_control_failed_connections_threshold  |   0                     |
   conection_control_max_connections_delay           |   1000   |
   conection_control_min_connections_delay           |   1000               |

修改配置文件

sed -i "154iconection_control_failed_connections_threshold=0" /etc/my.cnf

sed -i "155iconection_control_max_connections_delay=1000" /etc/my.cnf