MySQLエラーの概要:接続が多すぎます
ウェブアプリケーション(サイト、ブログ、フォーラムなど)へのアクセス数が多く、需要が高い場合、つまり多数のユーザーがアクセスする場合、サーバーリソースの消費量が増加します。このウェブアプリケーションがMySQLデータベースを使用しており、クエリが非常に多い場合(ウェブサイトのプログラミングが不十分な場合やユーザー数が多い場合など)、MySQLは次のようなエラーを表示する可能性があります。
mysqli_connect(): (HY000/1040): Too many connections
MySQL:Too Many Connectionsエラーはどういう意味ですか?
これは、MySQLに対して、受け入れ可能以上に、キューまたは待機可能以上に、非常に多くの要求が来ていることを意味します。
それを解決する方法は?
簡単ですが、MySQLがサポートするリクエスト(接続)の上限を増やす必要があります。
この問題を解決するためのXNUMXつのオプションを紹介します。
1. /etc/mysql/my.cfg ファイルを編集します。
nano /etc/mysql/my.cfg
その中で、[mysql]と書かれている場所の下に以下を置きます。
max_connections = 500 max_user_connections = 500
これにより、接続の最大数が100(デフォルト)から500に増加します。
保存して終了し、MySQLサービスを再起動します。これで完了です。 この変更は永続的です。
2.この問題を解決するもう1つの方法は、MySQLクエリを使用して最大制限を変更することです。
まず、現在の制限を示しましょう。
mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'
これにより、次のようなものが表示されます。
+ ----------------- + ------- + | Variable_name | 値| + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +
言い換えると、現在の制限は151接続です。では、クエリを使用して500に上げましょう。
mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'
準備完了
この方法での問題は、サービスを再起動すると、この構成が失われることです。
この詳細を補うには、X 回ごとにチェックする bash スクリプトを作成するか、デーモンの開始ブロックまたは再起動ブロックに行を追加することもできます
しかし、それではなぜこの 2 番目のオプションを知りたいのでしょうか? …まあ、それは私が言ったことです。しかし、1 か月前、Ubuntu サーバーは方法 2 を無視しました。そのため、愚かな OS の極端な場合には、同様に機能するこの XNUMX 番目のオプションがあります