系统无法连接到数据库,关键取决于两个数据:
1.max_connections,数据库系统允许的最大连接数。可以设置该参数。如果未设置,默认值为100。最大值是16384。
2.数据库threads_connected中的当前连接线程数。这是动态的。
See below for the method of viewing the maximum number of connections and the maximum number of connections.
如果threads _ connected==max _ connections,则数据库系统不能提供更多的连接。这时,如果程序还想创建新的连接线程,数据库系统会拒绝。如果程序不做太多的错误处理,
会出现类似强坛的错误信息。
因为创建和销毁数据库连接会消耗系统资源。而且为了避免同时打开太多的连接线程,现在编程一般都采用所谓的数据库连接池技术。
然而,数据库连接池技术无法避免程序错误导致的连接资源耗尽。
这种情况通常发生在程序未能及时释放数据库连接资源或者其他原因,但强坦系统估计不会出现这种低级编程错误。
检查此错误的简单方法是在刷新强平台页面时不断监视threads_connected的变化。如果max_connections足够大,
而且threads_connected值一直增加到max_connections,所以是时候检查程序了。当然,如果采用数据库连接池技术,
当threads_connected增长到数据库连接池中的最大连接线程数时,它将不再增长。
从强坦的错误来看,更有可能是数据库系统没有配置好。这里有一些建议。供参考
让您的工程师将mysql连接的最大数量从默认的100调整到32,000。这不会总是导致过多连接的问题。
View the maximum number of connections
Enter MySQL and use the command name: showvariables.
查看数据库中最大连接数的变量值:max_connections。
View Thread _ Connected
Enter MySQL and use the command: show status.
查看当前活动连接线程的变量值:threads_connected。
Set the maximum number of connections
设置方法是在my.cnf文件中添加如下最后一条红线:
--------------------------------------------------------------------------------
[mysqld]
port=3306
#socket=MySQL
skip-locking
set-variable=key_buffer=16K
set-variable=max_allowed_packet=1M
set-variable=thread_stack=64K
set-variable=table_cache=4
set-variable=sort_buffer=64K
set-variable=net_buffer_length=2K
set-variable=max_connections=32000
--------------------------------------------------------------------------------
修改完毕,重启MySQL。当然,为了确保设置正确,您应该检查max_connections。
注意:
1、虽然这里写的32000。但实际MySQL服务器允许的最大连接数16384;
2、除max_connections外,上述其他配置应该根据你们系统自身需要进行配置,不必拘泥;
3、添加了最大允许连接数,对系统消耗增加不大。
4、如果你的mysql用的是my.ini作配置文件,设置类似,但设置的格式要稍作变通。