Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

コネクションプーリング

最終更新 Markdown で表示Agent セットアップ

Hyperdrive は、データベースへの接続プールを維持します。プールは、アプリケーションのレイテンシを抑える位置に置かれます。オリジンデータベースへの接続数は、Hyperdrive の設定で変えられます。データベースの容量とアプリケーションの要件に合わせて、接続プールのサイズを調整できます。

たとえば、Worker がデータベースへ多くのクエリを送る場合(Hyperdrive のキャッシュでは解決できない場合)は、Hyperdrive がデータベースへ張る接続数を増やせます。 逆に、データベースまで届くクエリが少ない場合や、データベースが許可する接続数が少ない場合は、Hyperdrive が張る接続数を減らせます。

すべての設定で接続数の下限は 5 です。上限は Workers プランによって異なります。詳細は 制限 を参照してください。

Hyperdrive がデータベース接続をプールする仕組み

Hyperdrive は、トラフィックとデータベースへの負荷に応じて、開いておくデータベース接続の数を自動でスケールします。

max_size パラメーターは目安の上限です。ネットワーク障害や高トラフィック時には、可用性と耐障害性を確保するため、Hyperdrive が一時的に追加の接続を作ることがあります。

接続プールを再起動する

Hyperdrive は接続プールを管理します。ほとんどのデータベースフェイルオーバーは自動で検出し、復旧します。まれに、緊急対応としてプールを手動で再起動する必要があります。たとえば、データベースのフェイルオーバー後に、Hyperdrive がまだ新しいプライマリへ接続を切り替えていない場合です。

再起動するには、Cloudflare ダッシュボードで Hyperdrive の設定を選び、Settings タブを開き、Danger zoneRestart を選びます。再起動には Hyperdrive Admin ロール が必要です。

再起動すると、既存の接続プールを空にし、オリジンデータベースへ新しい接続を張らせます。再起動後、Settings タブに、設定を最後に手動再起動した時刻が表示されます。

プーリングモード

Hyperdrive のコネクションプーラーはトランザクションモードで動作します。クエリを実行するクライアントは、トランザクションのあいだ 1 本の接続を通じて通信します。トランザクションが完了すると、その接続はプールに戻されます。

Hyperdrive は、トランザクションまたはクエリのあいだ SET ステートメント に対応します。たとえば、BEGIN / COMMIT で手動でトランザクションを作った場合、そのトランザクション内の SET ステートメントは有効になります。また、SET コマンドを含むクエリ(SET X; SELECT foo FROM bar;)でも SET コマンドが適用されます。接続がプールに戻されると、接続は RESET されるため、その後のクエリには SET コマンドは効きません。

そのため、1 回の Worker 呼び出しでデータベース操作のために複数の接続を取得することがあり、クエリまたはトランザクションごとに設定を SET し直す必要がある場合があります。SET の状態を保つために複数のデータベース操作を 1 つのトランザクションでまとめることはおすすめしません。そのあいだ接続をほかの Worker isolate が再利用できないため、Hyperdrive の性能とスケールに影響します。

Hyperdrive は、postgres.js および node-postgres ドライバーで実装されている名前付きプリペアドステートメントに対応します。ほかのドライバーの名前付きプリペアドステートメントは、性能が落ちるか、未対応のことがあります。

ベストプラクティス

接続数は、Cloudflare ダッシュボードまたは Cloudflare API で設定できます。上限を決めるときは、次のベストプラクティスを検討してください。

  • 控えめに始める: まず少なめの接続数から始め、アプリケーションの性能を見ながら増やします。
  • データベースのメトリクスを監視する: データベースの接続使用量と性能メトリクスを見て、接続数を最適化します。
  • データベースの上限を考慮する: 設定した接続数が、データベースの最大接続数を超えないようにします。
  • 複数設定を合算する: 同じデータベースに複数の Hyperdrive 設定が接続している場合は、全設定の接続数の合計を考慮します。

次のステップ

役に立ちましたか?