このページでは、Cloud SQL の割り当てと上限について説明します。割り当てはプロジェクト単位で適用されます。上限は、その内容に応じて、インスタンスまたはプロジェクトに適用されます。
割り当て
割り当ては、Google Cloud プロジェクトで使用できる Google Cloud リソースの量を制限します。Cloud SQL は、このタイプのリソースの一例です。
Cloud SQL の場合、割り当てはシステムの一部であり、次の機能があります。
- Cloud SQL インスタンスの使用状況や消費量をモニタリングする
- 公平性の確保や使用量急増の抑制などのため、これらのインスタンスの消費量を制限する
- 規定の制限を自動的に適用する構成を維持する
- 割り当ての変更を実施またはリクエストする手段を提供する
割り当てを超過すると、ほとんどの場合、システムは関連するインスタンスへのアクセスを直ちにブロックするため、ユーザーが試行しているタスクは失敗します。割り当ては Google Cloud の各プロジェクトに適用され、そのプロジェクトを使用するすべてのインスタンスで共有されます。
割り当てを確認して増やすための権限
割り当てを確認して増やすには、次の権限が必要です。
serviceusage.quotas.get:
割り当てを確認するserviceusage.quotas.update:
割り当てを増やす
デフォルトでは、これらの権限は編集者とオーナーという IAM 基本ロールと、割り当て管理者という事前定義ロールに含まれています。追加の権限が必要な場合は、割り当て管理者にお問い合わせください。
割り当てを確認する
プロジェクトの現在のリソースの割り当て量を確認するには、Google Cloud コンソールの [割り当て] ページに移動し、Cloud SQL Admin API をフィルタリングします。これらの割り当ては API 呼び出しにのみ適用されます。API 呼び出しにデータベース クエリは含まれません。
割り当てを増やす
Google Cloud の使用量が多くなるに伴い、割り当てが引き上げられることがあります。使用量の大幅な増加が見込まれる場合は、十分なサイズの割り当てを確保できるように、数日前にリクエストしてください。
割り当て増加のリクエストには料金は発生しません。料金が発生するのは、リソースの使用量が増えたときのみです。
割り当てを増やす手順は次のとおりです。
Google Cloud コンソールで、[割り当て] ページに移動します。
Cloud SQL Admin API サービスでフィルタします。
このサービスが表示されない場合は、Cloud SQL Admin API を有効にします。
変更する割り当ての横にあるチェックボックスをオンにして、[割り当てを編集] をクリックします。
選択した各割り当ての [新しい上限] フィールドに、必要な上限の値を入力します。
[理由の説明] フィールドに、割り当ての増加をリクエストする理由を入力し、[完了] をクリックします。
[次へ] をクリックします。
名前、メールアドレス、電話番号を入力して、[リクエストを送信] をクリックします。
割り当ての増加に問題がある場合は、サポートケースを登録してください。
リソース割り当てが補充される時刻
割り当ては、毎日太平洋時間の深夜 0 時に補充されます。
割り当てとリソースの可用性
リソースの割り当てとは、そのリソースの種類で作成できる最大リソース数のことですが、それだけのリソースが利用可能であることが条件となります。割り当てが適用されていても、そのリソースを常に利用できるわけではありません。リージョンでリソースが物理的に利用できない場合、プロジェクトに割り当てが残っていても、その種類の新しいリソースを作成することはできません。
レートに基づく割り当て
Cloud SQL はレートに基づく割り当て(レート制限または API 割り当てとも呼ばれます)をサポートしています。レートに基づく割り当ては、Cloud SQL Admin API に対して実行できるリクエストの数を定義します。
各レートに基づく割り当ては、1 つ以上の Cloud SQL Admin API メソッドのカテゴリのすべてのリクエストに対応します。レートに基づく割り当ては、Cloud SQL に固有の時間間隔(1 分あたりの API リクエスト数など)が経過するとリセットされます。
gcloud CLI または Google Cloud コンソールを使用する場合、Cloud SQL Admin API に対してリクエストを行います。これらのリクエストは、レートに基づく割り当てにカウントされます。サービス アカウントを使用して API にアクセスする場合、これらのリクエストもレートに基づく割り当てにカウントされます。
Cloud SQL は、60 秒間隔で自動的にレートに基づく割り当てを適用して補充します。60 秒間内のどの時点でもプロジェクトがレートに基づく割り当ての上限に達すると、そのカテゴリでは、割り当てが補充されるまで待ってから追加のリクエストを行う必要があります。プロジェクトがこの上限を超えると、rateLimitExceeded
の理由で HTTP 429
ステータス コードが返されます。
Cloud SQL Admin API は、次のカテゴリに分かれています。
- Connect: Cloud SQL データベースへの接続に必要な値を検索します。
- Get: リソース(インスタンス、オペレーション、バックアップなど)に関する情報を取得します。
- List: リソースを一覧取得します。
- Mutate: リソースを作成、変更、削除します。
- リージョンごとのデフォルト: Cloud SQL インスタンスへの接続、取得、一覧表示、変更を行わずにインスタンスを操作します。
- デフォルト: Cloud SQL インスタンスのデータベース フラグとマシンタイプ(階層)をリストします。このカテゴリの API はグローバルなものです。
Cloud SQL では、各カテゴリに対し 1 分あたり、ユーザーごと、リージョンごとに、レートに基づく割り当てが適用されます。これらの属性の一意の組み合わせごとに、Cloud SQL は個別のレート制限を適用します。
Cloud SQL Admin API では、API の使用状況の追跡、Cloud SQL インスタンスと API のパフォーマンスのモニタリング、インスタンスと API 間の問題の検出に役立つ詳細な指標が生成されます。詳細については、Monitoring API の使用をご覧ください。
次の表は、各カテゴリの指標、API、デフォルトの上限に関する情報を示したものです。
上限
定期的に補充されず、Google Cloud コンソールの割り当てページに表示されないいくつかの Cloud SQL リソースには、上限が課されます。上限には、引き上げることができるものとできないものがあります。
引き上げることができる上限
プロジェクトあたりのインスタンス数
デフォルトでは、プロジェクトあたりの最大インスタンス数は 1,000 ですが、上限が 100 になる場合もあります。この数を引き上げる必要がある場合は、サポートケースを送信してリクエストしてください。リードレプリカはインスタンスとしてカウントされます。
インスタンス数を複数のプロジェクトに分散して、割り当て増加リクエストへの依存度を下げることをおすすめします。これにより、障害の可能性を回避できます。
最大同時接続数
max_connections
フラグを使用すると、接続数の上限を構成できます。MySQL では最大 32,000 の接続が可能です。データベースに接続して次のコマンドを実行すると、インスタンスの接続数上限を確認できます。
SHOW VARIABLES LIKE "max_connections";
注意点
Cloud SQL コネクタの割り当て使用量
Cloud SQL Auth Proxy と他の Cloud SQL コネクタは、Cloud SQL Admin API の割り当てを使用します。Cloud SQL コネクタは、約 1 時間ごとに更新オペレーションを実行します。この更新オペレーションでは、2 つの API 呼び出しが行われます。1 つの呼び出しでインスタンス メタデータを取得し、もう 1 つの呼び出しでエフェメラル証明書を取得します。
割り当て使用量は次のように計算されます。
Quota usage = connector processes running * instances * 2 API calls per hour
たとえば、コネクタを実行するプロセスが 3 つあり、2 つの Cloud SQL インスタンスに接続するようにコネクタが構成され、1 時間に 2 つの API 呼び出しが行われる場合、割り当ての使用量は 12(3 プロセス × 2 インスタンス × 2 API 呼び出し)になります。
Cloud SQL を初めて使用する場合は、上記の式を覚えておき、次の点に注意を払ってください。
新しい DB クライアントをスケールアップする速さ
インスタンスを追加する速さ
アプリケーションごとに異なるサービス アカウントを使用すること
Cloud SQL IAM データベース認証
各インスタンスには分単位のログイン割り当てがあります。これには、成功したログインと失敗したログインの両方が含まれます。割り当てを超過すると、一時的にログインできなくなります。頻繁にログインするのではなく、承認済みネットワークを使用してログインを制限することをおすすめします。ログインの承認の割り当ては、インスタンスごとに 1 分あたり 12,000 です。
転送ルールの割り当て
各 Cloud SQL インスタンスは、転送ルールとロードバランサで構成されています。転送ルールには、接続先のロードバランサの種類に基づく割り当て上限があります。転送ルールの種類ごと、プロジェクトごと、ネットワークごと、ピアリング グループごとに複数の割り当てがあります。Cloud SQL には、ネットワーク割り当てごとおよびピアリング グループの割り当てごとの、オーバーライド ルールもあります。つまり、Google がプロデューサー ネットワークのネットワークごとの割り当てを増やした場合、ピアリング グループごとの割り当ても同じ値に引き上げられます。
Cloud SQL プロデューサー VPC は、お客様の VPC とピアリングされるため、多くの場合、Cloud SQL プロデューサー ネットワークのネットワーク割り当てと、お客様の VPC のピアリング グループ割り当てに達します。
割り当てに達すると、次のような特定のオペレーションに失敗するようになります。
作成オペレーション: 新しいインスタンスを作成する場合は、新しい転送ルールが必要です。
更新オペレーション: インスタンスのネットワークはお客様が切り替えることができるため、新しいネットワークには新しい転送ルールが必要になります。
メンテナンス オペレーション: 転送ルールは再作成されます。
問題を回避するには、ネットワークあたりのインスタンス数の合計を 500 未満に制限することを検討してください。
問題が発生した場合は、サポートケースを登録してください。該当する割り当てを Google が引き上げます。
引き上げることができない上限
IOPS
IOPS とは、ディスクで 1 秒あたりに処理可能な入出力オペレーション(読み取り / 書き込みオペレーション)の回数です。
Cloud SQL は永続ストレージ ディスクを持つ Compute Engine 仮想マシン(VM)を使用します。具体的な VM のパフォーマンス特性の詳細については、永続ディスクのパフォーマンスの表で最大持続 IOPS をご覧ください。
テーブルの上限
Cloud SQL for MySQL のデフォルトの上限は 50,000 テーブルです。または、ハードウェアの最小要件(少なくとも 32 コア、最小 200 G メモリ)を満たしている場合は、インスタンスあたり 500,000 テーブルになります。最適なパフォーマンスを得るには、1 つのデータベース内のテーブル数を 50,000 以下にすることをおすすめします。
これらの上限を超えるインスタンスは SLA の対象外です。テーブルのサイズが Linux パーティションの最大サイズである 16 TB に達すると、データを追加できなくなります。
インスタンスに必要なメモリは、さまざまな要因によって異なります。Cloud SQL for MySQL がメモリを使用する方法の詳細については、MySQL がメモリを使用する仕組みをご覧ください。
アクティブなテーブル数が Cloud SQL のデフォルトより大きい場合、または全体的なキャッシュ サイズが非常に大きい場合は、インスタンスを調整する必要があります。最適なパフォーマンスを維持するために、次のことを行えます。
- 大容量メモリのオプションを使用するために、Cloud SQL Enterprise Plus エディションにアップグレードします。
- Cloud SQL マシンをアップグレードして、インスタンスにメモリを追加します。
innodb_buffer_pool_size
データベース フラグの値を減らします。
table_open_cache
フラグと table_definition_cache
フラグを使用すると、Cloud SQL for MySQL のテーブル キャッシュを変更できます。パフォーマンス スキーマを使用して、インスタンスのテーブル キャッシュ サイズを見積もることができます。
アクティブ テーブル数が Cloud SQL のテーブルのデフォルトと MySQL によるオープン テーブルの推奨の両方よりも大幅に大きい場合は、Cloud SQL では、インスタンスのアクティブなデーブル数を使用して table_open_cache
と table_definition_cache
のデータベース フラグを構成することをおすすめします。詳細については、MySQL によるテーブルの開閉方法をご覧ください。
オペレーションの上限
マイクロ階層と小規模階層のマシンタイプでは、同時実行するオペレーションの数が制限されます。これらの上限を超えると Too many operations
エラーが発生します。
db-custom-1-3840(単一 CPU)マシンタイプ同時実行オペレーションの上限は 50 です。
f1-micro(共有コア CPU)マシンタイプの同時実行オペレーションの上限は 20 です。Cloud SQL のストレージ上限
- 専用コア: 最大 64 TB。
詳細については、CPU とメモリの料金をご覧ください。
- 共有コア: 最大 3 TB。
詳細については、インスタンスの料金をご覧ください。
Cloud SQL のストレージ オプション
最適なパフォーマンスを得られるストレージ オプションを構成するには、ワークロードを理解して、適切なディスクタイプとサイズを選ぶことが重要です。Cloud SQL で利用可能な選択肢の詳細については、インスタンスの設定をご覧ください。App Engine に関する上限
スタンダード環境で実行される App Engine の各インスタンスでは、インスタンスに対する同時接続数が最大 100 個に制限されます。PHP 5.5 アプリについては、同時接続数が最大 60 個に制限されます。
App Engine アプリケーションでは、使用状況や環境に応じてリクエストに時間上限が設けられる場合があります。詳しくは、App Engine のスタンダード環境とフレキシブル環境におけるインスタンスの管理方法をご覧ください。
さらに App Engine アプリケーションには、App Engine の割り当てページで説明されている App Engine の割り当てと上限も適用されます。
Cloud Run に関する上限
Cloud Run で組み込みの Cloud SQL 接続を使用する場合、Cloud Run コンテナ インスタンスは、Cloud SQL データベースあたり 100 接続に制限されます。
Cloud Run サービスやジョブの各インスタンスには、データベースに対する 100 個の接続を含めることができ、このサービスやジョブがスケールするにつれて、デプロイごとの接続の合計数が増加します。
この上限は、サイドカーの Cloud SQL Auth Proxy、Cloud SQL 言語コネクタなどの他の接続方法を使用する場合や、Cloud SQL インスタンスの IP アドレスに直接接続する場合は適用されません。
Cloud Run functions の上限
Cloud Run functions(第 1 世代)では、インスタンスごとの同時実行数が 1 に制限されています。第 1 世代の関数インスタンスで同時に 2 つのリクエストが処理されることはありません。ほとんどの場合、必要なデータベース接続は 1 つだけになります。
Cloud Run functions(第 2 世代)は Cloud Run を基盤としており、インスタンスあたりのデータベース接続の上限は 100 です。