Data Management Service (DMS) または mongo シェルを使用して ApsaraDB for MongoDB に接続できます。このトピックでは、mongo シェルでよくある接続エラーとその解決策について説明します。
"connection attempt failed" エラー
症状:
#mongo --host ali12345678.mongodb.rds.aliyuncs.com:3717 --authenticationDatabase admin -u test -p xxx
MongoDB shell version: 3.2.3
DB Prefix:
connecting to: 10.1.2.8:3717/admin
2016-05-31T15:25:58.940+0800 W NETWORK Failed to connect to 10.*.*.8:3717 after 5000 milliseconds, giving up.
2016-05-31T15:25:58.943+0800 E QUERY Error: couldn't connect to server 10.*.*.8:3717 (10.1.2.8), connection attempt failed
at connect (src/mongo/shell/mongo.js:181:14)
at (connect):1:6 at src/mongo/shell/mongo.js:181
exception: connect failed
| 考えられる原因 | 解決策 |
| ECS インスタンスと ApsaraDB for MongoDB インスタンスが異なる VPC にあるか、異なるネットワークタイプを使用しています。 |
|
telnet を使用してネットワーク接続を確認します。例: telnet ali12345678.mongodb.rds.aliyuncs.com 3717
root@mongotest:~# telnet xxx.mongodb.rds.aliyuncs.com 3717
Trying xxx...
Connected to xxx.mongodb.rds.aliyuncs.com.
Escape character is '^]'.
この出力は、DNS 名前解決が成功し、ポート 3717 に到達可能であることを示しています。
"Authentication failed" エラー
症状:
#mongo --host ali12345678.mongodb.rds.aliyuncs.com:3717 --authenticationDatabase admin -u test -p xxx
MongoDB shell version: 3.2.3
connecting to: 10.1.2.8:3717/test
2016-05-31T15:50:18.623+0800 E QUERY Error: 18 Authentication failed.
at DB._authOrThrow (src/mongo/shell/db.js:1271:32)
at (auth):6:8
at (auth):7:2 at src/mongo/shell/db.js:1271
exception: login failed
| 考えられる原因 | 解決策 |
| データベースのユーザー名が正しくありません。 | 正しいユーザー名でデータベースにログオンしてください。 |
| データベースのパスワードが正しくありません。 | 正しいパスワードでデータベースにログオンしてください。 |
| アカウントが指定された認証データベースに属していません。 | アカウントに対応する正しい認証データベースを指定します。たとえば、root アカウントは admin データベースに属しているため、root として接続する場合は --authenticationDatabase admin を使用します。 |
| クライアントのバージョンが古いです。 | mongo シェル 3.0 以降にアップグレードしてください。「MongoDB のインストール」をご参照ください。ドライバーのバージョン要件については、「ドライバーの互換性に関するドキュメント」をご確認ください。 |
"isMaster" 実行時のネットワークエラー
症状:
#mongo --host ali12345678.mongodb.rds.aliyuncs.com:3717 --authenticationDatabase test -u test -p xxxxxx
MongoDB shell version v3.4.10
connecting to: mongodb:ali12345678.mongodb.rds.aliyuncs.com:3717/
2018-12-18T14:26:11.946+0800 E QUERY [thread1] Error: network error while attempting to run command 'isMaster' on host 'ali12345678.mongodb.rds.aliyuncs.com:3717' :
connect@src/mongo/shell/mongo.js:237:13
@(connect):1:6
exception: connect failed
| 考えられる原因 | 解決策 |
| ECS インスタンスの IP アドレスが MongoDB インスタンスのホワイトリストに含まれていません。 | ECS インスタンスの IP アドレスをホワイトリストに追加してください。「ApsaraDB for MongoDB インスタンスのホワイトリストを設定する」をご参照ください。 |
"Timeout while receiving message" エラー
org.springframework.data.mongodb.UncategorizedMongoDbException: Timeout while receiving message; nested exception is com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message
| 考えられる原因 | 解決策 |
| スロークエリにより CPU 使用率が急上昇します。 | スロークエリを特定し、インデックスを追加してください。「スロークエリの分析」をご参照ください。 |
| アプリケーションの接続プールが正しく設定されていません (たとえば、タイムアウト値が不正です)。 | 接続プールの設定を確認してください。「接続数のクエリと制限」をご参照ください。 |