CrestVPS

PostgreSQL VPS

データベースおよびインメモリワークロード

ディスクが重要でなくなるのに十分なメモリ。

当社がデプロイする構成

€125.30/月

€17930% 年額

特定のワーキングセットサイズを超えると、唯一重要な最適化は全体をRAMに収めることです。FORGEは、コアあたり最大16ギガバイトのレジスタードECCメモリを、hugepagesがプリコンフィグされ、NUMAアウェア配置で提供します。これはPostgreSQL、Redis、ClickHouse、および大規模なJVMヒープが求めるものです。その下にはGen5 NVMe in RAID10があり、ディスクにヒットする書き込みもボトルネックになりません。

この構成の理由

FORGEはシングルNUMAアフィニティにより、メモリアクセスをソケットにローカルに保ちます。30のリストアポイントを持つ夜間バックアップを追加してください。実際に発生する障害モードは、ディスク障害ではなく、悪いマイグレーションだからです。

当社がデプロイする構成

PlanFORGE F2
vCPU8 (dedicated)
RAM128 GB
ストレージ800 GB
イメージDebian 13 Trixie

サイジング

データベースではなく、ワーキングセットにRAMを合わせてください。ワーキングセットは、ホットなインデックスページと実際にアクセスされる行で、多くの場合2TBのOLTPデータセットの10〜20%です。InnoDBバッファプールをRAMの70〜75%に設定するか、Postgres shared_buffersを25%に設定し、ページキャッシュに残りを任せてください。FORGEはコアあたり16GBに達するため、512GBのバッファプールは約700GBのRAMと少なくとも44コアに相当します。キャッシュミスが1%を超える場合は、RAMを購入してください。

Hugepages、そしてそれがTHPと同じでない理由

4KBページでマッピングされた256GBのバッファプールには、約6400万のページテーブルエントリが必要です。TLBはそのかなりの部分を保持できず、ランダムアクセスはほとんどのルックアップでページウォークを支払います。静的な2MB hugepagesはエントリ数を512分の1に減らし、ウォークも減らします。大規模なプールでのクエリごとのCPU時間の測定可能な低下が期待できます。vm.nr_hugepagesで起動時に割り当て、プールに加えて約10%をサイズ設定し、データベースユーザーにmemlock制限を与えてください。透過的hugepagesは同じマッピングを達成しますが、日和見的に行い、コンパクションストールが発生します。THPを無効にし、明示的に割り当ててください。

ワーキングセット、推測ではなく測定

データディレクトリサイズからワーキングセットを推定しないでください。測定してください。Postgresでは、pg_buffercacheがshared_buffersを占有するリレーションを教え、pg_statio_user_tablesのheap_blks_hitとheap_blks_readの比率がテーブルごとのキャッシュヒット率を示します。MySQLでは、Innodb_buffer_pool_readsとInnodb_buffer_pool_read_requestsが同じシグナルを与えます。99%を超えるとメモリ内にあり、RAMを追加してもほとんど効果がありません。95%から99%の間は崖っぷちで、1つのインデックス化されていないクエリがあなたを押し落とす可能性があります。95%未満では、あなたが持っているすべてのレイテンシ数値は、実際には変装したディスクレイテンシ数値です。

問題点

  • 透過的hugepagesを有効のままにする。THPのデフラグメンテーションは予測できない瞬間にプロセスをミリ秒単位で停止させ、誰も説明できないp99レイテンシとして現れます。neverに設定し、代わりに静的hugepagesを割り当ててください。
  • 2ソケットFORGEでNUMAを無視する。バッファプールが1つのノードに配置され、半分のコアがインターコネクトを介して読み取り、MySQLが空きメモリがあるにもかかわらずスワップする可能性があります。numactl --interleave=allを使用するか、明示的にバインドしてください。
  • 平均スループットからIOPSをサイジングする。チェックポイント、バキューム、バックアップが重要となるピークです。定常状態を問題なく処理するプールは、チェックポイントフラッシュ中にインスタンス全体をストールさせる可能性があります。

マシンを調整

  • CPUスケジューリングSingle-NUMA-node affinity · €14
  • バックアップDaily backup, 30 restore points · €11
  • その他Second-resolution metrics + alerting · €5
  • ストレージと暗号化ZFS with hourly snapshots · €7