ApsaraDB for MongoDB インスタンスの接続数が上限に達すると、新しい接続リクエストに応答できなくなります。 このトピックでは、接続数が上限に達した場合に発生するデータベース接続障害の処理方法について説明します。

最大接続数は、ApsaraDB for MongoDB インスタンスのタイプによって異なります。 詳細については、「インスタンス仕様」をご参照ください。

現象

  • アプリケーションがデータベースへの接続に失敗します。
  • ホワイトリストは適切に設定されています。 しかし、mongo シェルを使用してデータベースに接続すると、次のエラーメッセージが表示されます。
    2019-07-10T10:30:43.597+0800 E QUERY    [js] Error: network error while attempting to run command 'isMaster' on host 'dds-bpxxxxxxxx.mongodb.rds.aliyuncs.com:3717'  :
    connect@src/mongo/shell/mongo.js:328:13
    @(connect):1:6
    exception: connect failed
  • ホワイトリストは適切に設定されています。 しかし、DMS を使用してデータベースに接続すると、次のエラーメッセージが表示されます。

作業の前に

必要なモニタリング情報を取得するには、MongoDB インスタンスの ApsaraDB の監視粒度を秒に設定することを推奨します。 詳細については、「モニタリング粒度の設定」をご参照ください。

接続数が上限に達しているかどうかを確認します

  1. ApsaraDB for MongoDB コンソールにログインします。
  2. ページの左上で、接続数を確認するインスタンスのリージョンを選択します。
  3. 左側のナビゲーションペインで、[レプリカセットインスタンス] または [シャーディングインスタンス] をクリックします。
  4. 接続数を確認するインスタンスの ID をクリックします。
  5. 左側のナビゲーションペインで [モニタリング情報] をクリックします。
  6. [モニタリング情報] ページで、接続情報を確認します。 下図には、インスタンスへの接続数が 500 であることが表示されています。
    インスタンスがシャードクラスターインスタンスである場合は、 [Mongos] ページの右上で使用中のノードを選択する必要があります。
  7. 左側のナビゲーションペインで [基本情報] をクリックします。
  8. [基本情報] ページで、現在のインスタンス仕様に対応する最大接続数を照会します。 この例では 500 です。
    現在の接続数に基づいて、接続数が上限に達していることを確認できます。

対応策

インスタンスを再起動すると、すべての接続を一時的に解放できます。 詳細については、「インスタンスの再起動」をご参照ください。 この問題の再発を防ぐには、インスタンスを再起動した後に以下の操作を実行することを推奨します。
インスタンスを再起動すると、すべてのインスタンスノードが 1 つずつ再起動されます。 各ノードで、約 30 秒の一時的な切断が発生します。 多数のコレクション (10,000を超える) がある場合、切断される時間は長くなります。 インスタンスを再起動する前にビジネスを調整し、アプリケーションに再接続メカニズムがあることを確認してください。