Docs Menu
Docs Home
/
MongoDB Atlas
/

Google Cloud での接続の管理

項目一覧

  • ベストプラクティス
  • Google Cloud Platform接続例

Google Cloud PlatformFunctions Atlasを使用して クラスターを操作できますGoogle Cloud Platform および の実行。

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

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

    関数を呼び出すたびに新しい MongoClient オブジェクトを定義しないでください。定義すると、ドライバーは関数を呼び出すごとに新しいデータベース接続を作成します。こうなると、コストが高くなり、アプリケーションがデータベース接続制限を超えてしまう可能性があります。新しい MongoClient を定義するときは、以下を行う必要があります。

    1. MongoClient オブジェクトを一度だけ作成します。

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

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

    多数のシャードを含むシャーディングされたクラスターに接続する関数がある場合、パフォーマンスの問題が発生する可能性があります。 たとえば、シャーディングされた 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 クラスターに接続することを検討してください 。それ以外の場合は、Atlas クラスターへのすべての IP アドレス( 0 . 0 . 0 . 0 / 0 )を許可する必要があります。

    警告

    0.0.0.0/0IP アクセス リストに追加すると、パブリック インターネットのどこからでもクラスターにアクセスできるようになります。どこからでもアクセスを許可する場合は、すべてのデータベース ユーザーについて必ず強力な認証情報を使用してください。

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

  • 同時実行性を構成します。 新しいGoogle Cloud Platform関数を作成すると、

    • 複数の同時リクエストを処理できる 2nd gen環境を選択します。 また、関数が単一の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;
}

戻る

Azure Functions