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

サーバー選択タイムアウトのトラブルシューティング

アプリケーションがMongoDBデプロイに接続しようとすると、サーバー選択タイムアウト エラーが発生する可能性があります。このエラーは、クライアントドライバーが設定されたタイムアウト期間内に適切なサーバーを選択できないことを示しています。

サーバー選択タイムアウトは通常、ネットワーク接続の問題、 IPアクセス制限、DNS SRV 解決の失敗、または TLS 構成の問題が原因で発生します。

このページでは、サーバー選択タイムアウトの一般的な原因について説明し、その原因を診断および解決する手順を提供します。以下の手順を完了しても問題が解決しない場合は、 テクニカル サポートにお問い合わせください。

アプリケーションでサーバー選択タイムアウトが発生していることを確認するには、クライアントのエラー メッセージを確認します。一般的な例には、次のようなものがあります。

  • MongoTimeoutError: Server selection timed out after 30000 ms

  • MongoServerSelectionError: connection timed out

  • MongoServerSelectionError: getaddrinfo ENOTFOUND

  • No suitable servers found (`serverSelectionTryOnce` set): [Failed to resolve '<my-database-host>]

  • Atlas 配置では、Atlas UI の [クラスター] ページで、緑色のドット ステータス インジケーターが表示され、クラスター状態が Active であることを確認します。

  • 自己管理型配置で、mongod プロセスが実行中、必要なポートでリッスンしていることを確認します。

サーバーまたはドライバーでログメッセージを有効にして、タイムアウトが経過するまでクライアントがサーバーの検出を繰り返し試行することを確認します。

クライアント ログでは、 クラスタートポロジー を検出するための繰り返しの試行と、その後タイムアウトが表示される場合があります。メッセージがを参照場合があります。

  • DNS 解決の失敗。

  • TLS ハンドシェイク エラー。

  • 完了しない接続試行。

getLogコマンドまたは設定されたログの保存先で実行したときに、サーバーログに着信接続試行がないことが表示される場合は、通常、ネットワーク接続の問題が発生していることを示します。

次のセクションでは、サーバー選択タイムアウトの一般的な原因とその解決方法について説明します。

クライアントが配置内のどのホストへの TCP 接続を確立できない場合、サーバー選択は失敗します。

接続を復元するには、次の手順に従います。

  1. クライアントホストからのアウトバウンド トラフィックが TCP ポート 27017(または構成されたカスタム ポート)で許可されていることを確認します。

  2. 制限については、ファイアウォールルール、セキュリティ グループ、ネットワーク ACL を確認してください。

  3. VPN、プロキシ、またはローカルファイアウォールが接続を中断していないことを確認します。

  4. 変更を加えた後、接続を再試行します。

クラスターが使用可能であるが、着信接続が受信されていない場合。

  1. Atlas UIで、 ネットワーク アクセス に移動します。

  2. クライアントのパブリックIPアドレスがIP アクセス リストに含まれていることを確認します。

  3. テストに必要な場合は、0.0.0.0/0 からのアクセスを一時的に許可します。

  4. 変更を保存し、構成が適用されるまで待ちます。

  5. 接続を再試行します。

IPアクセス リストの詳細については、「 IPアクセス リスト エントリの構成 」を参照してください。

SRV(サービス)検索中にクライアントがENOTFOUND や失敗などのエラーを報告した場合、環境は DNS SRV レコードを解決できない可能性があります。

クライアントホストから次の手順に従います。

  1. 接続文字列からホスト名を識別します。

    mongodb+srv://<cluster-name>.mongodb.net
  2. DNS SRV lookup を実行します。

    nslookup -type=SRV _mongodb._tcp.<cluster-name>.mongodb.net
  3. コマンドがMongoDBホストを指す 1 つ以上の SRV レコードを返すことを確認します。

  4. レコードが返されない場合:

    • ホスト名が正しいことを確認してください。

    • DNS プロバイダーが SRV レコードをサポートしているかどうかを確認します。

    • アウトバウンド DNS クエリがブロックされていないことを確認します。

SRV レコードを解決できない場合は、使用するアプリケーションの配置更新から標準接続文字列(非 SRV)を取得する必要があります。

mongodb://host1,host2,host3/?replicaSet=<name>

接続を再試行します。

接続文字列の詳細については、「 接続文字列 」を参照してください。

エラー出力に TLS または SSL ハンドシェイクの失敗が参照されている場合は、次の手順で一般的な TLS 構成の問題を解決できます。

  • クライアントドライバーが TLS 1.2 以降をサポートしていることを確認します。

  • システム ルート証明書が最新であることを確認します。

  • 自己管理型配置の場合:

    • 証明書ホスト名が接続文字列と一致していることを確認します。

    • 完全な証明書チェーンが使用できることを確認します。

これらの手順が完了したら、接続を再試行してください。

TLS/SSL の詳細と TLS/SSL 接続の構成方法については、「 TLS/SSL(トランスポート暗号化) 」を参照してください。

基礎となる問題を解決した後、以下を行います。

  • クライアントは、タイムアウトせずに接続を確立します。

  • アプリケーション ログは、サーバーが成功したことを示します。

  • Atlas メトリクス(該当する場合)にアクティブな接続が表示されます。

  • サーバー ログは、受信クライアント接続をレコード。

問題が解決されない場合は、テクニカル サポートに連絡する前に以下を収集してください。

  • クライアントエラー メッセージとスタックトレースを完了しました

  • MongoDB接続文字列(認証情報が削除)

  • ドライバー名とバージョン

  • MongoDBサーバーのバージョン

  • DNS SRV lookup の出力

  • ネットワーク接続テストの結果

  • MongoDBの関連ログ

戻る

接続ストーム

項目一覧