MySQL Too many connections
MySQL too many connections.
Of course this simply means there are too many connections to the MySQL database. This can happen on a very busy site or even on a site with few visitors that contains poor coding that doesn't drop connections.
To fix it, you can go one of two ways. Through SSH using MySQL commands or by adding a directive to the global configuration file (/etc/my.cnf).
-------------
For editing the configuration file, simply add the below directive to the configuration file.
/etc/my.cnf max_connections=XXX
Then restart MySQL services:
[01:50:26] [root@localhost ~]# service mysql restart Shutting down MySQL....... [ OK ] Starting MySQL. [ OK ]
-------------
To change it via command line, you will need to be root and log into MySQL and use the command "set global max_connections=XXX":
[01:50:37] [root@localhost ~]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 62 Server version: 5.1.65-cll MySQL Community Server (GPL) Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> set global max_connections=5000; Query OK, 0 rows affected (0.00 sec)
I found the default value set here (124) to be surprisingly low. However, is there any danger is changing the value to a number as high as 5000 (per your example above)? What are the pros/cons involved?
It depends on the traffic you're receiving. Around 1000 connections is the maximum before you want to start load balancing and clustering. Setting it too high will result in the server crashing after it runs out of memory.
If you have some pages or parts of your website or application that are not closing connections, you should review the programming and reasoning behind why those connections are staying open.
A site like WordPress, for example, will:
- Open the page.
- Open connection to the database.
- Query the database for info and receive said info.
- Close connection to the database.
- Display information / formatted, etc.
If your programming is not pretty, you'll have an application or website that opens a connection and never closes it. Increasing the size of the max connections is a temporary fix to a much bigger problem in this scenario. If anything, you will want your database queries to be as quick as possible, utilize caching, and not let your server die due to running out of memory.