Err: 1040: Too many connections 真正解决方法

| | 2013/05/20 17:02 , mdy
Mysql , 评论(0) , 阅读(3189) , Via 本站原创
问题现象:
出现 DateBase Err: 1040: Too many connections


解决过程
第一反应,修改MYSQL 的参数 max_connections=4087

原来问题出在PCONNECT
PCONNECT是不会在查询完成后就关闭,而是会等待一定时间,这个时间可以由MYSQL上的wait_timeout设定
而且mysql_close并无法关闭pconnect所开启的连线,只能关闭connect所开启的资料库连线。当然如果没有CLOSE在经过TIMEOUT时间之后也是会被DB DROP掉。
PCONNECT必须要小心使用,在写的不好的CODE中,会残留一大批的DATABASE CONNECTION。
最大值可以这样计算每台SERVER的APACHE行程数 * 所有WEB SERVEWR数量,每个连线都会消耗DB的CPU TIME与MEMORY
PCONNECT是傻瓜式的模拟连接池的方法,系统负载会疯狂上升。

解决方法:
修改php.ini参数为
[MySQL]
; 允许或阻止持久连接.
mysql.allow_persistent = Off
修改my.cnf参数为
max_connections = 600 (建议600~1000 一般大于apahce的MaxClients )
wait_timeout = 5