
Web アプリで接続が多すぎるというエラーが発生します:http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html
show full processes/g
したがって、コードをデバッグできるようにデータベースに接続する必要があります。次の CLI コマンドを使用しています。
mysql -h domain.eu-west-1.rds.amazonaws.com -P 3306 -u username -p
私が使用しているユーザー名は、インスタンスを起動したときに作成されたマスター ユーザー名です。mysql は、SUPER 権限を持つアカウントが接続できるように常に 1 つの接続を空けておくと理解していますが、実際に接続すると、エラーが多すぎるという応答が返されます。
構成を見ると、マスター ユーザー名にはデータベースに対するスーパー権限のみがあり、ドメインに対するスーパー権限はないようですが、これは正しいですか? 他にどのようにして MySQL にログインしてサーバーをデバッグできますか?
答え1
正解です。RDS では、どのアカウントにもSUPER
権限を与えることはできません。これは RDS の残念な制限です。
ただし、インスタンスの RDS パラメータ グループを増やすことで、問題を「修正」(または少なくとも対処) できるようです。max_connect_errors
これにより、RDS は IP からの接続エラーに対してより寛容になります。
あなたの質問を見ると、接続が多すぎるのか、それともエラーが多すぎるのか疑問に思います。
エラーが発生した場合は、別の IP からアクセスして、 でカウンターをクリアすることができますFLUSH HOSTS;
。
パラメータグループで= 2を設定するとlog_warnings
、接続エラーのログの量が増加します(エラーログはコンソールから利用できます)。かもしれないホストからのエラー数がそもそも増加している原因を特定するのに役立ちます。
パラメータ グループの変更は、可能な場合はサーバーに「ホット」に適用されますが、パラメータ グループの横にあるインスタンスの詳細画面には、変更の適用が保留中か、再起動が必要か、完了しているか (同期中) についてのヒントが表示されます。
問題が「接続が多すぎる」だけの場合、唯一の解決策は、アプリに強制的に一部の接続を切断させることができない場合、インスタンスを再起動して接続スロットを取得し、問題が再発したときにアクセスできるように接続を維持することです。