mysql数据库连接数过多导致系统出错,系统不能连接数据库,关键要看两个数据:

1、数据库系统允许的最大可连接数max_connections。这个参数是可以设置的。如果不设置,默认是100。

2、数据库当前的连接线程数threads_connected。这是动态变化的。

查看max_connections、max_connections的办法下面我们再说。

如果 threads_connected == max_connections 时,数据库系统就不能提供更多的连接数了,这时,如果程序还想新建连接线程,数据库系统就会拒绝,如果程序没做太多的错误处理。

因为创建和销毁数据库的连接,都会消耗系统的资源。而且为了避免在同一时间同时打开过多的连接线程,现在编程一般都使用所谓数据库连接池技术。

但数据库连接池技术,并不能避免程序错误导致连接资源消耗殆尽。

这种情况通常发生在程序未能及时释放数据库连接资源或其他原因造成数据库连接资源不能释放,发生类似错误的简便的检查办法是,在刷新页面时,不断监视threads_connected的变化。如果max_connections足够大,而 threads_connected值不断增加以至达到max_connections,那么,就应该检查程序了。当然,如果采用数据库连接池技术,threads_connected增长到数据库连接池的最大连接线程数时,就不再增长了。

查看 max_connections

show variables like "max_connections";

结果如下:

+-----------------+-------+

| Variable_name | Value |

+-----------------+-------+

| max_connections | 100 |

+-----------------+-------+

查看 threads_connected

show status like 'Thread_%';

结果如下:

+-------------------+-------+

| Variable_name | Value |

+-------------------+-------+

| Threads_cached | 0 |

| Threads_connected | 1 |

| Threads_created | 1 |

| Threads_running | 1 |

+-------------------+-------+

设置max_connections

设置办法是在my.cnf文件中找到max_connections一项修改即可,若没有该项,请在[mysqld]下添加一行:

[mysqld]

max_connections=1000

修改完毕后,重启MySQL即可。当然,为了确保设置正确,应该查看一下max_connections。

注意:

1、这里写的1000。请按实际要求修改;

2、添加了最大允许连接数,对系统消耗增加不大。

3、如果你的mysql用的是my.ini作配置文件,设置类似,但设置的格式要稍作变通。