B.5.2.7 接続が多すぎます

mysqld サーバーに接続しようとしたときに「接続が多すぎます」というエラーが表示される場合は、使用可能なすべての接続がほかのクライアントによって使用されていることを意味します。

許可される接続数は、max_connections システム変数によって制御されます。デフォルト値は、MySQL が Apache Web サーバーとともに使用された場合にパフォーマンスを向上させるために 151 です。(以前のデフォルトは 100 でした。)より多くの接続をサポートする必要がある場合は、この変数により大きい値を設定してください。

mysqld は実際には max_connections+1 クライアントの接続を許可します。余分な接続は、SUPER 権限を持つアカウントが使用するために予約されています。SUPER 権限を管理者に付与して、通常のユーザー (その権限の必要のないユーザー) に付与しないことによって、権限のないクライアントが最大数接続されていても、管理者はサーバーに接続して SHOW PROCESSLIST を使用し、問題を診断することができます。セクション13.7.5.30「SHOW PROCESSLIST 構文」を参照してください。

MySQL がサポートできる接続の最大数は、対象となるプラットフォームのスレッドライブラリの品質、使用可能な RAM の量、各接続で使用される RAM の量、各接続からのワークロード、および望ましい応答時間によって異なります。Linux または Solaris は、通常、500 から 1000 の同時接続をサポートでき、使用可能な RAM が数ギガバイトあり、各接続からのワークロードが少なく、応答時間の目標が厳しくない場合は、10,000 接続をサポートできます。Windows では、そのプラットフォームで使用されている POSIX 互換レイヤーのために、(オープンしているテーブル × 2 + オープンしている接続) < 2048 に制限されています。

open-files-limit を増やすことが必要となる可能性があります。MySQL が使用できるハンドル数に関するオペレーティングシステムの制限を緩和する方法については、セクション2.5「Linux に MySQL をインストールする」も参照してください。

Download this Manual
EPUB - 7.5Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb
User Comments
  Posted by Rob Williams on April 27, 2004
Detect "Too many connections" error and show alternate web page

if (
mysql_errno() == 1203) {
// 1203 == ER_TOO_MANY_USER_CONNECTIONS (mysqld_error.h)
header("Location: http://your.site.com/alternate_page.php");

  Posted by Femi Hasani on May 29, 2004

$link mysql_connect("localhost""user""pass");
if (
mysql_errno() == 1040 OR mysql_errno() == 1203) {
define("DB_NAME""db");  //database_name
define("DB_USER""user"); //database user name
define("DB_PASSWORD","pass");  //database (user) password
define("DB_NAME""db_name2");  //database_name
define("DB_USER""user"); //database user name
define("DB_PASSWORD","pass");  //database (user) password
//by feha at www.vision.to

  Posted by Álvaro G. Vicario on October 6, 2004
You can increase this value in main config file (e.g., /etc/my.cnf) using this syntax:

  Posted by Álvaro G. Vicario on January 13, 2005
A note por PHP developers. You can find this error if your scripts open persistent connections, wich aren't closed even if the script terminates. Use mysql_connect() instead of mysql_pconnect() unless you have a good reason. In particular, check this setting in third-party scripts (such as osCommerce).

Server administrators can disable persistent connections for PHP scripts in php.ini file:

; Allow or prevent persistent links.

Scripts won't fail, they'll just use non-persistent connections silently.
  Posted by Gary Lawrence Murphy on December 15, 2004
Another symptom for PHP users, the "max_connections" error being returned to the browsers and the "show processlist" filling up with sleeping threads: This can sometimes be alleviated by using the PHP .htaccess option to lower the connect timeout from the default 60 seconds.

php_value mysql.connect_timeout 20

  Posted by Bob Stein on August 15, 2005
The osCommerce setting mentioned by ?varo is in the catalog/includes/configure.php file:

define('USE_PCONNECT', 'false'); // use persistent connections?

It defaults to true, so mysql_pconnect() is used, and you get the error message "Warning: mysql_pconnect(): Too many connections ..." Change to false for mysql_connect() to be used.
  Posted by Remo G. on August 19, 2005
Please note that an instruction of the form
should be placed in the [mysqld] section. Otherwise MySQL will ignore it.
  Posted by Arjen van Kol on April 17, 2007
A lot of sites only suffer from this problem when Google or any other search bot is visiting. The best way to resolve this is to add the 'Crawl-delay' parameter in your robots.txt or to set it to a higher number of seconds.
  Posted by Maresa Nirwan on June 3, 2009
I found that maxing out all available connections is not the only way to have this error. If your disk on your MySQL server is full, you can also get this error. Clearing up disk space will rid of the error.

Full explanation of what I've encountered here: http://www.microshell.com/database/mysql/mysql-too-many-connection-errors/

  Posted by Hugh Murat on August 25, 2009
The following can also be used to change max_connections:

mysql> SET GLOBAL max_connections = 200;

However, this only lasts until the MySQL Server restarts.
  Posted by Jonathan Miller on November 18, 2009
On Solaris, you maybe limited to ulimits "open files".


do ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
open files (-n) 256
pipe size (512 bytes, -p) 10
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 29995
virtual memory (kbytes, -v) unlimited

Here "open files = 256" which is a very low setting.

At "open files = 1024" I was limited to 214 max connections.

In order the get the 500 + I wanted, I had to set "open files = 4096"

i.e. ulimit -n 4096

  Posted by oscar duron on November 27, 2014
Beware of mysql max connections on some hosting server providers who do not mention it in contract but they set max connections = 1 and if you need more you have to pay for premium services.
Sign Up Login You must be logged in to post a comment.