ApsaraDB RDS for MySQL インスタンスの最大接続数を調整して、高同時実行のワークロード要件を満たします。
背景情報
ApsaraDB RDS for MySQL では、最大接続数を制御するパラメーターを変更できます。これらのパラメーターは、ApsaraDB RDS コンソールで変更するか、API オペレーションを呼び出して変更できます。
利用シーン
ワークロードが大幅に変更された場合は、最大接続数を調整します。たとえば、短時間接続を使用するゲームアプリケーションでは、サービス開始時やバージョンアップデート時に接続リクエストが急増することがあります。
パラメーター
次の 2 つのパラメーターで最大接続数を制御します:
-
max_user_connections:単一のデータベースアカウントで許可される最大同時接続数です。値の範囲は 10~208,000 です。アカウントの接続数がこの制限を超えると、システムは
has more than 'max_user_connections'またはhas exceeded the 'max_user_connections'エラーを返し、新しい接続はブロックされます。 -
max_connections:すべてのデータベースアカウントにわたってインスタンスに許可される最大同時接続数です。値の範囲は
1~208,000です。合計接続数がこの制限を超えると、システムはtoo many connectionsエラーを返し、新しい接続はブロックされます。
影響
各接続はメモリを消費します。max_connections を高く設定しすぎると、メモリ不足 (OOM) エラーが発生する可能性があります。設定された接続制限がインスタンスの容量を超えた場合に安定性の問題を防ぐために、ご利用のインスタンスタイプのデフォルト値を使用してください。
注意事項
-
max_connections パラメーターを変更した後、[パラメーター] ページの [実行中の値] 列の値が設定した値よりも高くなります。これは、表示される値にシステムがメンテナンス用に予約した接続が含まれているためです。[基本情報] ページの [最大接続数] の値は、設定した値と同じです。
-
インスタンスの再起動後、max_connections パラメーターの上限は open_files_limit パラメーターの影響を受けます。この場合、max_connections の実際の実行値は、次の数式で決定されます:
min(open_files_limit - 810, 指定した値または現在のインスタンスタイプの推奨最大接続数 + 予約済みメンテナンス接続)。open_files_limit のデフォルト値は 655350 です。max_connections パラメーターを 654540 (予約済みメンテナンス接続を含む) より大きい値に設定する場合は、インスタンスの再起動後に max_connections が open_files_limit によって上限に達するのを防ぐために、コンソールで open_files_limit パラメーターも大きくしてください。open_files_limit パラメーターは静的パラメータであり、変更を有効にするにはインスタンスを再起動する必要があります。
コンソールでの最大接続数の変更
-
[インスタンス] ページに移動します。上部のナビゲーションバーでインスタンスのリージョンを選択し、インスタンス ID をクリックします。
-
左側のナビゲーションウィンドウで、[パラメーター] をクリックします。
-
[変更可能なパラメーター] タブで、max_user_connections または max_connections パラメーターを見つけます。[実行中の値] 列で
アイコンをクリックし、ダイアログボックスに新しい値を入力して、[OK] をクリックします。 -
[変更を適用] をクリックします。表示されるダイアログボックスで、変更を有効にするタイミングを選択し、[OK] をクリックします。
説明max_user_connections および max_connections パラメーターへの変更は、インスタンスを再起動しなくてもすぐに有効になります。
API を使用した最大接続数の変更
リクエスト例
この例では、ModifyParameter API オペレーションを使用して、max_connections を 2000 に、max_user_connections を 500 に設定します。
http(s)://rds.aliyuncs.com/?Action=ModifyParameter
&DBInstanceId=rm-gs5v9xajylz45****
&Parameters={"max_connections":"2000","max_user_connections":"500"}
&<common request parameters>
JSON フォーマットのレスポンス例
HTTP/1.1 200 OK
Content-Type:application/json
{
"RequestId" : "542BB8D6-4268-45CC-A557-B03EFD7AB30A"
}
変更の確認
-
[インスタンス] ページに移動します。上部のナビゲーションバーでインスタンスのリージョンを選択し、インスタンス ID をクリックします。
-
左側のナビゲーションウィンドウで、[パラメーター] をクリックします。
-
[編集履歴] タブで、新しいパラメーター値が有効になっていることを確認します。
よくある質問
-
Q:max_connections パラメーターを変更する前に、[パラメーター] ページの [実行中の値] 列の値が、インスタンスで実際に利用可能な最大接続数よりもすでに高かったのはなぜですか。
A:[パラメーター] ページの [実行中の値] 列の値には、インスタンスのメンテナンスと安定性のために予約されている接続が含まれているため、アプリケーションで利用可能な接続数よりも高くなります。
-
Q:max_connections パラメーターを変更した後、[実行中の値] が設定した値よりも大きいのはなぜですか。
A:[パラメーター] ページの [実行中の値] 列の値には、インスタンスのメンテナンスと安定性のために予約されている接続が含まれています。アプリケーションで利用可能な実際の最大接続数は、[基本情報] ページの [最大接続数] フィールドに表示されます。
-
Q:インスタンスタイプをスペックアップした後、最大接続数が変わらなかったのはなぜですか。
A: 最大接続数は手動で設定できます。カスタム値を設定していない場合、インスタンスは インスタンスタイプ に応じたデフォルト値を使用します。