MySQL Error “Too many connections”

Shared-hosting providers generally allow a pretty small amount of simultaneous connections for the same user.

What your code does is :

  • open a connection to the MySQL server
  • do it’s stuff (generating the page)
  • close the connection at the end of the page.

The last step, when done at the end of the page is not mandatory : (quoting mysql_close‘s manual) :

Using mysql_close() isn’t usually
necessary, as non-persistent open
links are automatically closed at the
end of the script’s execution.

But note you probably shouldn’t use persistent connections anyway…

Two tips :

  • use mysql_connect insead of mysql_pconnect (already OK for you)
  • Set the fourth parameter of mysql_connect to false (already OK for you, as it’s the default value) : (quoting the manual) :

If a second call is made to
mysql_connect() with the same
arguments, no new link will be
established, but instead, the link
identifier of the already opened link
will be returned.

The new_link
parameter modifies this behavior and
makes mysql_connect() always open a
new link, even if mysql_connect() was
called before with the same
parameters.


What could cause the problem, then ?

Maybe you are trying to access several pages in parallel (using multiple tabs in your browser, for instance), which will simulate several users using the website at the same time ?

If you have many users using the site at the same time and the code between mysql_connect and the closing of the connection takes lots of time, it will mean many connections being opened at the same time… And you’ll reach the limit 🙁

Still, as you are the only user of the application, considering you have up to 200 simultaneous connections allowed, there is something odd going on…


Well, thinking about “too many connections” and “max_connections“…

If I remember correctly, max_connections does not limit the number of connections you can open to the MySQL Server, but the total number of connections that can bo opened to that server, by anyone connecting to it.

Quoting MySQL’s documentation on Too many connections :

If you get a Too many connections
error when you try to connect to the
mysqld server, this means that all
available connections are in use by
other clients.

The number of connections allowed is
controlled by the max_connections
system variable. Its default value is
100. If you need to support more connections, you should set a larger
value for this variable.

So, actually, the problem might not come from you nor your code (which looks fine, actually) : it might “just” be that you are not the only one trying to connect to that MySQL server (remember, “shared hosting”), and that there are too many people using it at the same time…

… And if I’m right and it’s that, there’s nothing you can do to solve the problem : as long as there are too many databases / users on that server and that max_connection is set to 200, you will continue suffering…

As a sidenote : before going back to GoDaddy asking them about that, it would be nice if someone could validate what I just said ^^

Leave a Comment