php, 数据库

连接MySQL出现的too many connections的问题

抛出问题

最近测试环境突然出现了too many connections的mysql异常抛出,当然这是连接数过多没有释放导致的。查看问题,首先连接上mysql服务器。

问题分析

运行语句SHOW PROCESSLIST 查看当前连接进程,
运行语句show global variables like 'max_conne%' 查看最大连接数限制多少条。

基本就可以定位到问题了,当前连接进程跟最大连接数基本持平,导致大量新的连接建立失败。
废话不多说,下面说解决方案吧,有两个方向去修改。

解决问题

  • 客户端

这一部分可能需要修改业务代码,在客户端连接获取完数据后及时关闭数据库连接,这样就可以防止连接数过多。

  • 服务端

mysql服务端修改的话,有两种配置,一种是增加最大连接数,修改max_connections参数,或者修改连接断开的时间限制参数,这样的话可以让一些sleep的连接回收。这种解决方式是修改wait_timeout参数,修改为你觉得业务合适的时间区间就好了。
另外,还有个interactive_timeout参数,这个参数与wait_timeout的区别是客户端的交互模式。一般程序连接的为非交互模式,修改wait_timeout参数就好了。

One thought on “连接MySQL出现的too many connections的问题

发表评论

您的电子邮箱地址不会被公开。

20 − 7 =