このページでは、Cloud Spanner が提供する CPU 使用率の指標について説明します。これらの指標は、Google Cloud Console と Cloud Monitoring コンソールで確認できます。
CPU 使用率とタスク優先度
Cloud Spanner はタスクのソースと優先度に基づいて CPU 使用率を測定します。
ソース: タスクは、ユーザーまたはシステムのいずれかが開始できます。
優先度: 優先度は、Spanner が最初に実行するタスクを決めるのに役立ちます。システムタスクの優先度はあらかじめ決定されているため、構成できません。ユーザータスクは、特に指定されていない限り、高い優先度で実行されます。読み取り や executeSql などの多くのデータ リクエストでは、優先度が低いリクエストを指定できます。これは、パフォーマンス SLO が低いバッチ、メンテナンス、分析クエリを実行するときなどに役立ちます。
一般的に、優先度の高いタスクは優先度の低いタスクよりも先に実行されます。Spanner は、優先度の高いタスクが競合した場合に、利用可能な CPU リソースを最大で 100% まで活用できるようにします。優先度の低いシステムタスクは、短時間遅延する可能性がありますが、最終的には実行する必要があります。したがって、すべてのタスクを処理するには、十分なコンピューティング能力を持つインスタンスをプロビジョニングする必要があります。
優先度の高いタスクが存在しない場合、Spanner では、利用可能な CPU リソースを最大で 100% まで割り当てることによって、優先度の低いタスクをより迅速に完了するよう試みられます。バックグラウンドでの使用率の急上昇は、問題の兆候ではありません。優先度の低いタスクは、ユーザータスクなどの優先度の高いタスクがあれば、ほぼ瞬時にリソースを譲ることができます。
次の表に、各タスクの例を示します。
ユーザーのタスク | システムタスク | |
---|---|---|
優先度高 |
読み取り や executeSql など、優先度指定なし、または PRIORITY_HIGH と指定されているデータ リクエストが含まれます。 |
該当するもの: データ分割 |
中間の優先度 |
内容:
|
内容:
|
低い優先度 |
PRIORITY_LOW と指定されたデータ リクエストが含まれます。 |
インデックスのバックフィルを含みます。 |
利用可能な指標
Spanner には、CPU 使用率の指標として次のものが用意されています。
Smoothed CPU utilization: データベースごとに、合計 CPU 使用率の稼働平均をインスタンスの CPU リソースの割合(%)で表したものです。各データポイントは過去 24 時間の平均を表します。 この指標を使用して、アラートを作成し、24 時間などの長時間にわたって CPU 使用率を分析します。この指標のグラフは、Google Cloud コンソールまたはCloud Monitoring コンソールの24 時間の稼働平均で確認できます。
優先度別の CPU 使用率: インスタンスの CPU リソースの割合を、優先度、ユーザーが開始したタスク、システムが開始したタスクでグループ化したものです。この指標を使用して、アラートを作成し、CPU 使用率を大まかに分析します。この指標のグラフは、Google Cloud コンソール または Cloud Monitoring コンソールで確認できます。
オペレーションの種類ごとの CPU 使用率: ユーザーが開始したオペレーション(読み取り、書き込み、commit など)でグループ化した、インスタンスの CPU リソースの比率としてのCPU 使用率。高 CPU 使用率の調査の説明に従い、この指標を使用して、CPU 使用率の詳細な内訳を取得し、さらにトラブルシューティングします。この指標のグラフは Cloud Monitoring コンソールで作成できます。
以下で説明するように、Cloud Monitoring コンソールを使用して CPU 使用率に関するアラートを作成することもできます。
高 CPU 使用率に関するアラート
次の表に、シングルリージョン インスタンスとマルチリージョン インスタンスの両方について、推奨される最大 CPU 使用率を示します。これらの数値を使用すると、ゾーン全体(シングルリージョン インスタンスの場合)またはリージョン全体(マルチリージョン インスタンスの場合)が消失したとしても、インスタンスでトラフィックの処理を続行できるだけの十分なコンピューティング容量が保証されます。
指標 | シングルリージョン インスタンスの場合の最大値 | マルチリージョン インスタンスの場合のリージョンあたりの最大値 |
---|---|---|
高い優先度の合計 | 65% | 45% |
24 時間の平滑化された集計 | 90% | 90% |
推奨される最大値以下で維持するために、高い優先度 CPU 使用率と 24 時間の平均 CPU 使用率を追跡するアラートを Cloud Monitoring で作成します。
CPU 使用率は、リクエストのレイテンシに影響する可能性があります。個々のバックエンド サーバーが過負荷状態になると、リクエストのレイテンシが大きくなります。アプリケーションでベンチマークとアクティブなモニタリングを実行することによって、Cloud Spanner がパフォーマンス要件を満たしていることを確認する必要があります。
したがって、パフォーマンスの影響が大きいアプリケーションでは、次のセクションで説明する手法を使用して CPU 使用率をさらに低下させる必要がある場合があります。
CPU 使用率の低下
このセクションでは、インスタンスの CPU 使用率を低下させる方法について説明します。
一般に、手始めにインスタンスのコンピューティング容量を増やすことをおすすめします。コンピューティング能力を増やしたら、高 CPU 使用率の根本原因を調べて対処できます。
コンピューティング容量の増加
推奨される CPU 使用率の最大値を超える場合は、インスタンスのコンピューティング容量を増加して、インスタンスが引き続き効率よく動作するようにすることを強くおすすめします。このプロセスを自動化する場合は、UpdateInstance
メソッドを使用することによって、CPU 使用率をモニタリングして、必要に応じてコンピューティング容量を増加または減少するアプリケーションを作成できます。
必要なコンピューティング容量を決定するには、優先度の高い CPU 使用率のピークと 24 時間の平滑化された平均の両方を考慮します。CPU 使用率が推奨最大値を常に下回るように、十分なコンピューティング容量を割り当ててください。上記のとおり、パフォーマンスの影響が大きいアプリケーションでは、(ワークロードの急激な増加に対応するなどの目的で)ノードを余分に割り当てる必要がある場合があります。
十分なコンピューティング容量がない場合は、Spanner は優先度レベルによってタスクを延期します。データベースの圧縮やスキーマ変更の検証などの優先度の低いシステムタスクは、ユーザータスクのために延期される可能性があります。しかし、これらのタスクもインスタンスの健全性に不可欠であるため、Spanner によって無期限に延期されることはありません。コンピューティング リソース不足のために、特定の時間枠内(数時間から 1 日程度)に優先度の低いシステムタスクを完了できない場合は、Spanner によりそれらのシステムタスクの優先度が上げられる場合があります。その場合、ユーザータスクのパフォーマンスに影響が生じます。
イントロスペクション ツールを使用したより詳細な調査
オペレーションの種類別の CPU 使用率の指標が、特定の種類のオペレーションが高 CPU 使用率の原因となっていることを示している場合は、Spanner のイントロスペクション ツールを使用してさらにトラブルシューティングします。詳細については、高 CPU 使用率の調査をご覧ください。
次のステップ
- Console または Monitoring コンソールを使用してインスタンスをモニタリングします。
- Spanner の CPU 使用率のアラートを作成します。
- Spanner インスタンスのコンピューティング容量を変更する方法を検討します。
高レイテンシと他の指標の相関分析を行う方法を学習する。
特定のオペレーションの種類によって発生する高 CPU 使用率のトラブルシューティング方法を学習するには、高 CPU 使用率の調査をご覧ください。