Anda dapat menggunakan Data Management Service (DMS) atau mongo shell untuk terhubung ke ApsaraDB for MongoDB. Topik ini mencakup error koneksi mongo shell yang umum beserta solusinya.
Error "connection attempt failed"
Gejala:
#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
| Kemungkinan penyebab | Solusi |
| Instans ECS dan instans ApsaraDB for MongoDB berada di VPC yang berbeda atau menggunakan jenis jaringan yang berbeda. |
|
Gunakan telnet untuk memverifikasi konektivitas jaringan. Contoh: telnet dds-ali123456789.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 '^]'.
Output ini menunjukkan bahwa resolusi DNS berhasil dan Port 3717 dapat dijangkau.
Error "Authentication failed"
Gejala:
#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
| Kemungkinan penyebab | Solusi |
| Username database salah. | Login ke database dengan username yang benar. |
| Password database salah. | Login ke database dengan password yang benar. |
| Akun tidak termasuk dalam database autentikasi yang ditentukan. | Tentukan database autentikasi yang benar untuk akun tersebut. Misalnya, akun root termasuk dalam database admin, sehingga gunakan --authenticationDatabase admin saat login sebagai root. |
| Versi client sudah usang. | Tingkatkan ke mongo shell versi 3.0 atau lebih baru. Instal MongoDB. Untuk persyaratan versi driver, lihat dokumentasi kompatibilitas driver. |
Error jaringan saat menjalankan "isMaster"
Gejala:
#mongo --host ali12345678.mongodb.rds.aliyuncs.com:3717 --authenticationDatabase test -u test -p xxxxxx
MongoDB shell version v3.4.10
connecting to: mongodb:ali1234567878.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 'ft12345678.mongodb.rds.aliyuncs.com:3717' :
connect@src/mongo/shell/mongo.js:237:13
@(connect):1:6
exception: connect failed
| Kemungkinan penyebab | Solusi |
| Alamat IP instans ECS tidak ada dalam daftar putih instans MongoDB. | Tambahkan alamat IP instans ECS ke daftar putih. Konfigurasi daftar putih untuk instans ApsaraDB for MongoDB. |
Error "Timeout while receiving message"
org.springframework.data.mongodb.UncategorizedMongoDbException: Timeout while receiving message; nested exception is com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message
| Kemungkinan penyebab | Solusi |
| Query lambat menyebabkan pemanfaatan CPU melonjak. | Identifikasi query lambat dan tambahkan indeks. Analisis query lambat. |
| Kolam koneksi aplikasi dikonfigurasi secara salah (misalnya, nilai timeout tidak tepat). | Periksa pengaturan kolam koneksi Anda. Kueri dan batasi jumlah koneksi. |
Skema koneksi umum
- Hubungkan ke instans MongoDB melalui jaringan publik
- Hubungkan instans ECS ke instans ApsaraDB for MongoDB dengan jenis jaringan berbeda melalui jaringan internal
- Hubungkan instans ECS ke instans ApsaraDB for MongoDB di wilayah berbeda melalui jaringan internal
- Hubungkan instans ECS ke instans MongoDB di akun berbeda melalui jaringan internal