“Could not connect. Too many connections” Error in

2019-08-16 02:22发布

问题:

I have the following code

function openDBConn($params){
    $conn_mode = $params['conn_mode'];
    $db_conn = $params['db_conn'];

    //create connections
    if(empty($db_conn->info)) {
        $db_conn = new mysqli("localhost", $user, $password, "database");
        $db_conn->set_charset('UTF8'); 
        $mysqli_error = $db_conn->connect_error;
    }

    if($mysqli_error !== NULL){ 
        die('Could not connect <br/>'. $mysqli_error); 
    }else{ 
        return $db_conn; 
    }
}

//close db connection
function closeDBConn( $params ){
    $db_conn = $params['db_conn'];
    $db_conn->close;
}

//used as below
$db_conn = openDBConn();

save_new_post( $post_txt, $db_conn );

closeDBConn( array('db_conn'=>$db_conn));

From time to time, I get the "Could not connect. Too many connections" error. This tends to happen when I have Google bot scanning my website.

This problem seems to have started ever since upgrading to MySQLi from MySQL. Is there any advice on how ensure all connections are closed?

Thanks

回答1:

You need to increase the number of connections to your MySQL server (the default is only 100 and typically each page load consumes one connection)

Edit /etc/my.cnf

max_connections = 250

Then restart MySQL

service mysqld restart

http://major.io/2007/01/24/increase-mysql-connection-limit/



回答2:

Some hosters have a hard limit how many open database connections your are allowed to have. Maybe you want to contact your hoster to know how many you are allowed to open. For websites with hight traffic load more connections can be helpful.



回答3:

Do you have access to the server directly or is it a hosted solution?

If you have direct access you can check the mySQL config files to see how many connections are allowed and increase it.

If you don't you might want to contact your webhost about increasing the limit and see if they will comply.