数据库毗连过多的错误,年夜概的启事分解及措置惩罚行动

 来源:网海拾贝  




琐屑不克不及毗连数据库,关头要看两个数据:
1、数据库琐屑许可的最年夜可毗连数max_connections。这个参数是可以设置的。若是不设置,默许是100。最年夜是16384。
2、数据库以后的毗连线程数threads_connected。这是静态变革的。
反省max_connections、max_connections的行动见后。

若是 threads_connected == max_connections 时,数据库琐屑就不克不及供给更多的毗连数了,这时,若是挨次还想新建毗连线程,数据库琐屑就会回绝,若是挨次没做太多的错误措置,就会出现近似强坛的报错信息。

因为树立和烧毁数据库的毗连,都会耗损琐屑的资本。并且为了阻止在同一光阴同时掀开过多的毗连线程,目前编程普通都利用所谓数据库毗连池妙技。

但数据库毗连池妙技,并不克不及阻止挨次错误招致毗连资本耗损殆尽。

这种气象凡是产生在挨次未能实时开释数据库毗连资本或其他启事形成数据库毗连资本不克不及开释,但强坛琐屑估计不会产生这种低级的编程错误。
该错误的简洁的检查行动是,在刷新强坛页面时,不断把守threads_connected的变革。若是max_connections充沛年夜,而threads_connected值不断添加致使达到max_connections,那么,就应该检查挨次了。当然,若是收受接收数据库毗连池妙技,threads_connected增进到数据库毗连池的最年夜毗连线程数时,就不再增进了。

从强坛出错的气象看,更年夜的年夜概性是数据库琐屑没能遏制适外地配置。下面提出一点倡始。供参考

让你们的工程师把MySQL的最年夜许可毗连数从默许的100调成32000。这就不会老出现毗连过多的标题成绩了。


反省max_connections

进入MySQL,用下令:show variables
反省数据库最年夜可毗连数的变量值:max_connections


反省threads_connected

进入MySQL,用下令:show status
反省以后举动的毗连线程变量值:threads_connected


设置max_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作配置文件,设置近似,但设置的式子要稍作变通。



版权声明: 原创作品,许可转载,转载时请务必以超链接方式标明文章 原始来由 、作者信息和本声明。否则将究查法律责任。

posted @ 2011-03-08 00:40  蓝色的天空III  阅读(183)  评论(0编辑  收藏  举报