max_user_connections は、最大ユーザー接続数を指定します。「has more than max_user_connections active connections」や「User xxx has exceeded the max_user_connections resource」など、最大ユーザー接続数に達したことに関するエラーメッセージが表示された場合は、この記事の手順に従って問題を解決できます。
症状
Data Management (DMS) コンソールまたはデータベースクライアントから ApsaraDB RDS for MySQL インスタンスに接続できません。システムから「max_user_connections」に関連するエラーメッセージが返されます。
原因
ApsaraDB RDS for MySQL インスタンスが接続制限に達したため、新規接続が失敗します。
接続元の特定
コンソールの機能
SQL Explorer and Audit
SQL Explorer and Audit 機能を有効にすると、実行アカウント、IP アドレス、その他の実行詳細など、データベースカーネルからの SQL ステートメントが自動的に記録されます。この機能はインスタンスのパフォーマンスには影響しません。詳細については、「SQL Explorer and Audit」をご参照ください。
SQL Explorer and Audit は有料機能です。課金の詳細については、「SQL Explorer and Audit の課金」をご参照ください。
操作手順
-
[RDS インスタンスリスト] に移動し、上部のナビゲーションバーでリージョンを選択し、次に目的のインスタンスの ID をクリックします。
-
左側のナビゲーションペインで、 を選択します。
-
SQL Explorer と監査を有効化する。
セッション管理
セッション管理機能を使用すると、インスタンスの現在のすべてのセッション、アクティブなセッション、および異常なセッションを表示できます。各セッションのユーザー、ホスト、実行時間、ステータスなどの情報が表示されます。詳細については、「セッション管理」をご参照ください。
操作手順
-
[RDS インスタンスリスト]に移動し、上部のナビゲーションバーでリージョンを選択し、対象インスタンスの ID をクリックします。
-
左側メニューで、自律型サービス > ワンクリック診断 を選択します。
-
セッション管理 タブには、インスタンスの現在のセッションのユーザー、ホスト、実行時間、ステータスが表示されます。
SQL コマンド
データベースの最大ユーザー接続数に達した場合、新しいセッションを確立して SQL ステートメントを実行することはできません。既存の DMS セッションがある場合は、それを使用して SQL コマンドを実行できます。
Elastic Compute Service (ECS) インスタンスからデータベースに接続するか、DMS にログインし、次の SQL コマンドを実行して、長時間実行されているスレッドを表示し、トラブルシューティングします。詳細については、以下をご参照ください:
SHOW PROCESSLIST;
結果の [Host] 列に、接続元の IP アドレスが表示されます。
結果には、[Id]、[User]、[Host]、[db]、[Command]、[Time] 列が含まれます。[Command] 列を確認して、各スレッドの状態を判断します。たとえば、Binlog Dump GTID コマンドはプライマリ/レプリカレプリケーション接続を示し、Daemon コマンドはイベントスケジューラデーモンを示します。長時間実行されているスレッドがあれば、トラブルシューティングを行います。
解決策
-
インスタンスセッションの詳細を確認します。
-
RDS インスタンスリストに移動し、上部メニューでリージョンを選択し、ターゲットインスタンスの ID をクリックします。
-
左側のナビゲーションペインで、 を選択します。
-
セッション管理 タブで、インスタンスのセッション詳細を表示します。詳細については、「インスタンスセッション」をご参照ください。
-
-
データベースインスタンスの max_user_connections 設定を確認します。
次の 2 つの方法で、max_user_connections パラメーターの値を確認できます:
-
ApsaraDB RDS コンソールから:
-
RDS インスタンスリストに移動し、上部メニューでリージョンを選択し、ターゲットインスタンスの ID をクリックします。
-
左側メニューで、パラメーターの設定 をクリックします。
-
変更可能なパラメーター タブで、max_user_connections パラメーター値を確認します。
-
-
ApsaraDB RDS for MySQL にログインし、次のコマンドを実行して max_user_connections パラメーターの値を表示します。
show variables like 'max_user_connections';
-
-
十分なメモリリソースがあることを確認した後、max_user_connections パラメーターの値を増やしてください。詳細については、「最大接続数を変更する」をご参照ください。
-
問題が解決しない場合は、以下の方法をお試しください。
-
接続数が多い問題をトラブルシューティングし、最適化します。詳細については、「ApsaraDB RDS for MySQL インスタンスへの接続数が上限に達した場合の対処方法」をご参照ください。
-
インスタンスを再起動して、すべての接続を解放します。詳細については、「インスタンスの再起動」をご参照ください。
-