ホストを選ぶ前に作業を明確にする
リクエストパスを描きます。リバースプロキシ、API プロセス、データベース、外部サービスです。非同期パスも追加します。キュー、ワーカー、エクスポート先です。どのコンポーネントがホストを共有するか、誰が同時実行数を制御するか、再構築後も存続すべきデータはどれかを記録します。アプリケーションメトリクスと、代表的なデータを用いた非本番ワークロードが必要です。このガイドは、プロビジョニング済みの PrivacyNodes インスタンスを前提としていません。
例示的なレポーティング API では、HTTP リクエストがアカウント設定を読み取り、エクスポートをキューに入れます。ワーカーは行をスキャンし、ファイルを書き込みます。キュー投入応答が高速でも、ピークトラフィック中にエクスポートが完了できることの証明にはなりません。テスト計画には、スケジュールされたクリーンアップとデプロイのオーバーラップを含めます。
メモリのワークシートにオーバーラップを含める
これらは MiB 単位の仮想的な計画入力であり、PrivacyNodes に関する測定値や約束ではありません。実際に観測されたアプリケーション要件に置き換えてください。RSS には常駐共有マッピングが含まれるため、全プロセスの RSS を合計するとメモリを二重計上する可能性があります。すべてのファイルシステムキャッシュを恒久的に利用不可とみなすより、ホストの利用可能メモリの方が有用です。
技術リファレンス: Linux プロセスのメモリ計上.
| コンポーネント | 予算 | 前提 |
|---|---|---|
| ホストとツール | 512 MiB | OS、プロキシ、テレメトリ |
| 2 つの API プロセス | 768 MiB | 想定ピーク時で各 384 |
| 1 つのエクスポートワーカー | 512 MiB | 上限付きバッチ |
| データベース | 1,024 MiB | キャッシュとクエリ作業 |
| リリースのオーバーラップ | 512 MiB | 新旧の作業が共存 |
| 未割り当ての余裕 | 512 MiB | 調査すべき不確実性 |
| 想定合計 | 3,840 MiB | 実際のホストメモリと比較 |
これは名目上の 4 GB エンベロープに近すぎて、余裕のある容量と想定できません。ホストが報告する実際のメモリと、ピークが重なるかどうかを確認します。同時実行数を減らす、コンポーネントを移動する、メモリを追加するなどの対応をとってください。表に合わせるためだけに予備を削除しないでください。
PostgreSQL work_mem は操作ごとの許容量であり、データベース全体の制限ではありません。同時セッションと操作はその影響を倍加させる可能性があります。Docker コンテナにはデフォルトで CPU やメモリの制約がありません。イメージはリソースポリシーではありません。
技術リファレンス: PostgreSQL のリソース消費 · Docker のリソース制約.
キューの滞留時間と併せて CPU を測定する
通常のリクエスト、最も遅い有用なレポート、失敗した依存関係、エクスポートを同時に試します。同じ期間にわたってレイテンシのパーセンタイル、エラー、ホスト CPU、ワーカーの同時実行数、最も古いジョブの経過時間を記録します。CPU プレッシャーとキューの増加は、CPU が低くデータベース待機が長い場合とは異なる対応を示唆します。
エクスポートを 1 件実行中の状態で例を開始します。ワーカーが外部ストレージを待つ場合、CPU を増やしてもほとんど変わらないかもしれません。API レイテンシが上昇する中でコアを繰り返し飽和させる場合は、より小さなエクスポートバッチまたは別のワーカー予算を試します。容量を購入する前に、1 つの要因を変更して同じシナリオを繰り返します。
次のメンテナンス作業を予算に組み込む
データベースファイルとインデックス、アップロード、ログ、一時エクスポート、リリースアーティファクト、メンテナンス用の空き容量を列挙します。週ごとの増加量と、予備がいつ枯渇するかを記録します。20 GB のデータセットに 20 GB の一時コピーがあれば、通常のアプリケーショントラフィックが静かでも 20 GB 以上が必要です。
ログローテーションとエクスポートの有効期限を定めます。復旧コピーはホストの障害境界の外に保管します。追加の VPS ストレージは作業割り当てを拡張しますが、同じディスク上のコピーは独立したバックアップではありません。通常運用と、バックアップやエクスポートと並行して実行されるリリースの両方をテストします。
再検討できる決定を記録する
出力はワークシート、ワークロードの説明、およびレビューのトリガーです。代表的なテスト中に最も古いジョブの経過時間が増加する、メンテナンス用スペースが減少する、または現在のプロセスと共存できないリリースがある、といったものです。普遍的な CPU パーセントのしきい値をでっち上げるのではなく、観察を記録します。
比較する App 2 と Scale 4 これらの制約と比較します。それでも結果に驚く場合は、 スタックを通して 1 つの遅いリクエストを追跡する。この演習はワークロードを見積もるものであり、サプライヤーのベンチマーク、トラフィック容量、可用性を確立するものではありません。
公式リファレンス
この記事のドキュメントをレビューしました。例は計画用の演習であり、PrivacyNodes サーバーでテストされたコマンドではありません。インストールされているバージョンのドキュメントを確認してください。