Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

Google Cloud での接続の管理

Google Cloud Platform FunctionsGoogle Cloud Platform Run を使用して、Atlas クラスターを操作できます。

次のベストプラクティスを使用して、 Google Cloud Platform関数とAtlasの間の接続を適切に管理します。

  • 関数スコープのデータベース接続ではなく、グローバルスコープのデータベース接続を使用して Cloud Function を作成します。

    関数を呼び出すたびに新しいクライアントオブジェクトを定義しないでください。定義すると、ドライバーは関数を呼び出すごとに新しいデータベース接続を作成します。こうなると、コストが高くなり、アプリケーションがデータベース接続制限を超えてしまう可能性があります。最高のパフォーマンスを得るには、次のガイドラインに従ってください。

    1. クライアントオブジェクトを一度だけ作成します。

    2. オブジェクトを保存し、関数の呼び出し全体でクライアントを再利用できるようにします。

    この接続例では、既存のデータベース接続を再利用して、データベースとの通信を高速化し、データベースへの接続数をアプリケーショントラフィックに関して適切なレベルに維持します。

    多数のシャードを含むシャーディングされたクラスターに接続する関数がある場合、パフォーマンスの問題が発生する可能性があります。 たとえば、シャーディングされた Atlas クラスターが 10 個ある場合、ドライバーはデフォルトで 30 個のmongosインスタンスすべてに接続します。 接続文字列に srvMaxHosts オプションを使用して、ドライバーが接続するホストの最大数を設定できます。 ドライバーのパフォーマンスを向上させるには、 srvMaxHosts=3を設定します。 例:

    mongodb+srv://<db_username>:<db_password>@<clusterName>.mongodb.net/?retryWrites=true&w=majority&srvMaxHosts=3

    詳細については、「接続オプション 」を参照してください。

  • Atlas クラスターへのネットワーク アクセスを制限します。

    クラスターと Atlas関数間の ネットワークピアリング接続 を使用してプライベート ネットワーク経由でAtlasGCP クラスターに接続するか、または IPプライベートエンドポイント を使用して、 アクセスIP リスト からプライベート アドレスのみを許可できるようにします。

    プライベートネットワークを使用しない場合は、NAT ゲートウェイ 経由で Atlas クラスターに接続することを検討してください。それ以外の場合は、すべてのIPアドレス(0.0.0.0/0)に Atlas クラスターへのアクセスを許可する必要があります。

    警告

    などの /0CIDR を追加すると、あらゆる場所からアクセスできるようになります。この構成では、配置を不正アクセス、データの抽出、その他の悪意のあるアクティビティにつながる可能性があります。可能な場合は常に信頼できるIPアドレスまたは 0.0.0.0/0CIDR 範囲へのアクセスを制限し、パブリック インターネットからのアクセスを許可する場合は、すべてのデータベースユーザーについて強力な認証情報を使用します。

    注意

    プロジェクトのアクセス リストに IPv4 /0 CIDR(0.0.0.0/010.0.0.0/0 など)を追加すると、Atlas はプロジェクトにロールが直接付与されているすべてのユーザーに、 または を通じてロールが付与されているすべてのユーザーにアラートメールを送信します。チームメンバーシップ(チームにプロジェクトロールが付与されている場合)。

  • maxIdleTimeMS60000 に設定すると、アイドルタイムが 1 分経過した後に接続が自動的に閉じられます。maxIdleTimeMS を調整すると、サーバーレス関数からのタイムアウト エラーの発生を減らすことができます。
  • 同時実行性を構成します。 新しいGoogle Cloud Platform関数を作成すると、

    • 複数の同時リクエストを処理できる2nd gen環境を選択します。 2と 生成では、関数が多数の同時呼び出しで単一のMongoClientを共有できるようにすることで、サーバーの接続負荷も軽減されます。

    • 同時実行設定を増やすと、コールド スタートが最小限に抑えられ、レイテンシが改善されます。

    注意

    同時実行設定を増やす場合は、最高のパフォーマンスを得るために CPU を増やす必要がある場合があります。詳細については、同時実行性 を参照してください。

次の例では、Node.js Google Cloud Platform 関数を Atlas配置に接続します。 <YOUR-ATLAS-CONNECTION-STRING> を Atlas 接続文字列に置き換えます。

const { MongoClient } = require('mongodb');
let client;
async function getConnection() {
if (!client) {
const client = new MongoClient('<YOUR-ATLAS-CONNECTION-STRING>');
client.on('connectionCreated', () => {
console.log('New connection created successfully.');
});
// Connect to the database in the global scope
await client.connect();
}
return client;
}