MariaDBで「ERROR 1040 (08004): Too many connections」のエラー

MySQLで「Too many connections」のエラーで解決法

WEBサーバーが重くてアクセスできにくいと申告があったので、下記のようにWordpressのDBにログインしようと思ったら「ERROR 1040 (08004): Too many connections」と表示されてアクセスできませんでした

$ mysql -u wp_admin -p
Enter password: 
ERROR 1040 (08004): Too many connections

エラーの内容は同時接続数がしきい値をこえてしまったのでアクセスできなっている可能性がありますので、最大接続数を確認すると「51」の接続数がありました

$ mysqladmin -u root -p  extended-status | egrep '(Max|Threads_)';
Enter password: 
| Max_used_connections                     | 51               |
| Threads_cached                           | 5                |
| Threads_connected                        | 47               |
| Threads_created                          | 52               |
| Threads_running                          | 46               |

今設定されている最大接続数を確認するので、「max_connections 」の値を確認します。最大接続数を50ですのでエラーが表示されている状態です

MariaDB [(none)]> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 50    |
+-----------------+-------+
1 row in set (0.00 sec)

最大接続数(max_connections)の値をを増やす

設定ファイル(my.cnf)に、max_connections = <最大接続数を> を追加して、MySQLを再起動して設定を反映すれば、最大接続数を増やすことができます

$ sudo vim /etc/my.cnf
[mysqld]

# 下記追加 (最大接続数は500となります)
max_connections = 500

$ systemctl restart mysqld

サーバーが稼働中にMySQLの再起動を難しい場合は以下のように、「set global max_connections=<最大接続数>;」とすれば最大接続数が変更されます。
但し設定ファイル(my.cnf)にも設定をいれておかないとMySQLを再起動した場合にデフォルト値になる場合があるので注意して下さい

MariaDB [(none)]> set global max_connections=500;
MariaDB [(none)]> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 500   |
+-----------------+-------+
1 row in set (0.00 sec)