MySQLのコネクション数が最大になるとどうなるのか確認してみる

CentOSにPHPのとりあえずの開発環境を作成してみる
の続き

MySQLのコネクション数が最大になるとどうなるのか確認してみる。


まず、max_connectionsを確認すると、151になっている。

mysql> show variables like 'max%';
+----------------------------+----------------------+
| Variable_name              | Value                |
+----------------------------+----------------------+
| max_allowed_packet         | 1048576              |
| max_binlog_cache_size      | 18446744073709547520 |
| max_binlog_size            | 1073741824           |
| max_connect_errors         | 10                   |
| max_connections            | 151                  |
| max_delayed_threads        | 20                   |
| max_error_count            | 64                   |
| max_heap_table_size        | 16777216             |
| max_insert_delayed_threads | 20                   |
| max_join_size              | 18446744073709551615 |
| max_length_for_sort_data   | 1024                 |
| max_long_data_size         | 1048576              |
| max_prepared_stmt_count    | 16382                |
| max_relay_log_size         | 0                    |
| max_seeks_for_key          | 18446744073709551615 |
| max_sort_length            | 1024                 |
| max_sp_recursion_depth     | 0                    |
| max_tmp_tables             | 32                   |
| max_user_connections       | 0                    |
| max_write_lock_count       | 18446744073709551615 |
+----------------------------+----------------------+

コネクションをたくさん生成するPHPプログラムを作成。

test.php

<?php
$stock = array();
while ($link = mysql_connect('localhost', 'ユーザー名', 'パスワード', true)) {
  $stock[] = $link;
  echo count($stock) . "\n";
}
echo mysql_error();

実行すると、エラーになる。

$ php test.php
1
2
3
・・・
150
151
152
PHP Warning:  mysql_connect(): Too many connections in /home/hoge/test.php on line 3