All Products
Search
Document Center

ApsaraDB for MongoDB:Troubleshoot masalah koneksi dan jaringan

Last Updated:Jun 11, 2026

Diagnosis dan perbaiki kegagalan koneksi untuk instans ApsaraDB for MongoDB. Mulai dari Error umum untuk solusi cepat, atau ikuti Langkah troubleshooting untuk mengidentifikasi akar penyebab secara sistematis.

Langkah troubleshooting

Langkah 1: Periksa konektivitas jaringan

Metode troubleshooting

Uji konektivitas ke instans ApsaraDB for MongoDB dengan perintah berikut.

  • Jalankan perintah ping <domain>. Misalnya, jalankan ping dds-xxxx.mongodb.rds.aliyuncs.com.

    ping dds-xxx.mongodb.rds.aliyuncs.com
    PING dds-xxx.mongodb.rds.aliyuncs.com (xxx): 56 data bytes
    64 bytes from xxx: icmp_seq=0 ttl=90 time=7.698 ms
    64 bytes from xxx: icmp_seq=1 ttl=90 time=7.085 ms
    64 bytes from xxx: icmp_seq=2 ttl=90 time=11.006 ms
    64 bytes from xxx: icmp_seq=3 ttl=90 time=12.154 ms
    64 bytes from xxx: icmp_seq=4 ttl=90 time=9.149 ms

    Output ini mengonfirmasi bahwa klien dapat menjangkau instans ApsaraDB for MongoDB.

  • Jalankan perintah telnet <domain> <port>. Misalnya, jalankan telnet dds-xxxx.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 mengonfirmasi resolusi DNS dan aksesibilitas port 3717.

Daftar periksa

Jika pengujian jaringan gagal, periksa hal-hal berikut.

Periksa status instans. Instans harus berada dalam status Running.

Periksa pengaturan daftar putih. Alamat IP klien harus ditambahkan ke daftar putih instans ApsaraDB for MongoDB.

  • Cara memeriksa:

    Sementara tambahkan 0.0.0.0/0 ke daftar putih instans. Jika Anda dapat terhubung ke instans setelah perubahan ini, berarti pengaturan daftar putih sebelumnya salah.

    Penting

    Alamat IP 0.0.0.0/0 memungkinkan perangkat apa pun mengakses instans ApsaraDB for MongoDB, yang menimbulkan risiko keamanan. Gunakan alamat IP ini hanya untuk tujuan pengujian dan segera hapus dari daftar putih setelah pengujian selesai.

  • Solusi:

    Tambahkan alamat IP klien yang benar ke daftar putih. Untuk mengetahui IP publik klien Anda, lihat FAQ.

Periksa jenis jaringan dan titik akhir. Gunakan titik akhir yang sesuai dengan jenis jaringan Anda (pribadi atau publik).

Anda dapat login ke Konsol ApsaraDB for MongoDB dan melihat titik akhir instans pada halaman Database Connection.

Langkah 2: Otorisasi dan otentikasi

Verifikasi nama akun dan password, serta periksa karakter khusus dalam password.

  • Verifikasi bahwa nama akun dan password yang diberikan benar.

  • Ganti password. Jika Anda perlu mengganti password, lihat Reset password.

    Jika Anda mengganti password setelah terhubung ke instans ApsaraDB for MongoDB menggunakan Data Management Service (DMS), buka DMS console, klik kanan instans target, lalu pilih Edit untuk login kembali.

  • Karakter khusus. Saat menggunakan MongoDB Shell atau kode aplikasi untuk terhubung ke instans ApsaraDB for MongoDB, Anda harus melakukan escape terhadap karakter khusus seperti !@#$%^&*()_+= dalam nama akun atau password. Bagaimana cara mengatasi kegagalan koneksi yang disebabkan oleh karakter khusus dalam username atau password?.

Periksa database otentikasi. Akun database harus diautentikasi terhadap database tempat akun tersebut dibuat.

Periksa titik akhir instans. Untuk instans set replika yang memerlukan operasi write, kami menyarankan agar Anda terhubung menggunakan titik akhir URI ConnectionString.

  • Gejala: Instans tiba-tiba tidak dapat diakses, meskipun titik akhir tidak diubah.

  • Penyebab: Hanya node primary yang dapat melakukan operasi write. Jika aplikasi Anda sebelumnya terhubung menggunakan titik akhir node primary, failover dapat mengubah node yang terhubung menjadi node secondary, sehingga menyebabkan operasi write gagal.

  • Solusi:

    • Untuk lingkungan produksi, kami menyarankan agar aplikasi Anda terhubung ke database menggunakan URI ConnectionString. Dengan cara ini, jika terjadi kegagalan node, operasi read dan write tidak terpengaruh oleh failover. Untuk detail titik akhir, lihat topik berikut:

    • Secara manual tukar peran node. Promosikan node yang sesuai dengan titik akhir single-node menjadi node primary.

    Implementasikan mekanisme reconection dan penanganan exception dalam aplikasi Anda untuk memastikan pemulihan otomatis dari disconnection sementara.

Langkah 3: Pemeriksaan lainnya

Periksa apakah performa instans memenuhi kebutuhan bisnis Anda.

Periksa tool pihak ketiga.

Jika tool pihak ketiga, seperti Navicat atau Compass, tidak dapat terhubung ke instans ApsaraDB for MongoDB Anda, masalah tersebut mungkin disebabkan oleh pengaturan instans atau tool yang salah. Ikuti langkah-langkah berikut untuk troubleshooting:

  1. Uji koneksi menggunakan MongoDB Shell.

    Kami menyarankan agar Anda menggunakan MongoDB Shell untuk terhubung ke instans menggunakan URI ConnectionString berdaya tinggi.

  2. Lakukan troubleshooting berdasarkan hasil pengujian.

    • Koneksi berhasil: Instans dapat diakses. Masalah kemungkinan besar disebabkan oleh pengaturan yang salah pada tool pihak ketiga. Periksa konfigurasi tool tersebut.

    • Koneksi gagal: Jika MongoDB Shell tidak dapat terhubung, pengaturan instans mungkin salah. Ikuti langkah-langkah dalam topik ini untuk memeriksa konektivitas jaringan, otorisasi, otentikasi, dan pengaturan lainnya.

Error umum

Pesan error

Penyebab dan solusi

network error while attempting to run command 'isMaster' on host 'dds-xxxx.mongodb.rds.aliyuncs.com:3717' :exception: connect failed

  • Timed out after 3000ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. exception=(com.mongodb.MongoSocketReadException: Prematurely reached end of stream)

  • Socket recv() errno:54 Connection reset by peer x.x.x.x:27017

Instans mungkin telah mencapai batas koneksi.

Solusi:

  1. Periksa apakah koneksi telah habis. Bagaimana cara menanyakan jumlah koneksi?.

  2. Optimalkan penggunaan koneksi. Apa yang harus saya lakukan jika jumlah koneksi ke instans saya mencapai batasnya?.

MongoDB.Driver.MongoWaitQueueFullException: The wait queue for acquiring a connection to server xxx is full.

Antrian tunggu driver MongoDB penuh, kemungkinan besar karena ukuran kolam koneksi terlalu kecil atau konkurensi tinggi.

Solusi:

  1. Periksa konfigurasi kolam koneksi dalam aplikasi. Pastikan ukuran kolam sesuai. Bagaimana cara membatasi jumlah koneksi client?.

  2. Jika masalah tetap berlanjut, periksa apakah koneksi ke instans ApsaraDB for MongoDB telah habis:

    1. Bagaimana cara menanyakan jumlah koneksi?

    2. Apa yang harus saya lakukan jika jumlah koneksi ke instans saya mencapai batasnya?

(TooManyLogicalSessions) Unable to add session into the cache because the number of active sessions is too high.

Koneksi konkuren berlebihan dapat menghabiskan sesi yang tersedia.

Solusi:

  1. Lakukan troubleshooting kegagalan koneksi yang disebabkan oleh koneksi yang habis.

    1. Bagaimana cara menanyakan jumlah koneksi?

    2. Apa yang harus saya lakukan jika jumlah koneksi ke instans saya mencapai batasnya?

  2. Jika jumlah koneksi normal, periksa apakah metrik performa lain dari instans memenuhi kebutuhan bisnis Anda.

    1. Gunakan pemantauan node untuk memeriksa penggunaan sumber daya, seperti CPU dan memori, guna menentukan apakah tipe instans memenuhi kebutuhan bisnis Anda.

    2. Jika tipe instans terlalu kecil untuk beban kerja, ubah konfigurasi instans selama jam tidak sibuk.

  • getaddrinfo failed.

  • No suitable servers found (`serverSelectionTryOnce` set).

Verifikasi bahwa titik akhir instans benar:

  • Failed to connect to 10.*.*.8:3717 after 5000 milliseconds, giving up.Error: couldn't connect to server 10.*.*.8:3717 (10.*.*.8), connection attempt failed

  • pymongo.errors.ServerSelectionTimeoutError: dds-xxxx.mongodb.rds.aliyuncs.com:3717: [Errno 113] No route to host,dds-xxxx.mongodb.rds.aliyuncs.com:3717

  • InvalidInstanceId.NotFound: The instance not in current vpc.

Instance ECS gagal terhubung ke instans ApsaraDB for MongoDB melalui jaringan pribadi.

Solusi:

  1. Periksa pengaturan daftar putih. Pastikan alamat IP pribadi instance ECS ditambahkan ke daftar putih instans ApsaraDB for MongoDB.

  2. Pastikan instance ECS dan instans ApsaraDB for MongoDB dapat berkomunikasi satu sama lain melalui jaringan.

    Jika instance ECS dan instans ApsaraDB for MongoDB berada dalam VPC yang sama, keduanya dapat terhubung langsung melalui jaringan pribadi. Jika berada dalam VPC berbeda, gunakan salah satu metode berikut:

org.springframework.data.mongodb.UncategorizedMongoDbException: Timeout while receiving message; nested exception is com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message

  • "errmsg": "not master", "code": 10107, "codeName": "NotMaster"

  • "errmsg": "not master", "code": 10107, "codeName": "NotWritablePrimary"

  • Time out after 30000ms while waiting for a server that matches writableServerSelector.

  • Command failed with error 10107 (NotWritablePrimary): 'not primary' on server xxx.

  • Explain's child command cannot run on this node. Are you explaining a write command on a secondary?

  • not master and slaveOk=false.

  • MongoNotPrimaryException: Command failed with error 10107 (NotMaster): 'not master' on server xxx.

  • reason: TopologyDescription { type: 'ReplicaSetNoPrimary',...}

Node tempat data ditulis bukan node primary.

Penyebab: Operasi write hanya dapat dilakukan pada node primary. Jika aplikasi Anda sebelumnya terhubung menggunakan titik akhir node primary, failover dapat mengubah node yang terhubung menjadi node secondary, sehingga menyebabkan operasi write gagal.

Solusi:

Implementasikan mekanisme reconection dan penanganan exception dalam aplikasi Anda untuk memastikan pemulihan otomatis dari disconnection sementara.

[Unauthorized] cloud instance error, disk locked, plz check and upgrade your disk quota,

Disk space habis telah mengunci instans.

Solusi: Mengatasi penguncian instans atau kegagalan write akibat disk space habis.

(AuthenticationFailed) Authentication failed.

  • !xxx@dds-xxx.mongodb.rds.aliyuncs.com: event not found

Password akun database berisi karakter khusus, seperti !@#$%^&*()_+=.

Solusi: Bagaimana cara mengatasi kegagalan koneksi yang disebabkan oleh karakter khusus dalam username atau password?.

error getting cluster ID: (CommandNotFound) replSetGetConfig is forbidden by cloud provider for security reason

ApsaraDB for MongoDB tidak mendukung replSetGetConfig. Batasan perintah di ApsaraDB for MongoDB.

FAQ

Menanyakan koneksi

Jumlah maksimum koneksi bervariasi berdasarkan tipe instans.

Catatan

Batas koneksi berlaku per node. Misalnya, instans set replika tiga node dengan 1 vCPU dan 2 GB memori memungkinkan hingga 500 koneksi baik pada node primary maupun setiap node secondary. Node tersembunyi tidak melayani traffic.

Konsol

  1. Buka halaman Instans Set Replika ApsaraDB for MongoDB atau halaman Instans Kluster Sharded ApsaraDB for MongoDB. Di bilah navigasi atas, pilih wilayah. Kemudian, klik ID instans target.

  2. Di panel navigasi kiri, klik Monitoring Information.

  3. Pada halaman Monitoring Information, lihat informasi Connections untuk instans.

    Jika instans adalah instans kluster sharded, Anda harus memilih Mongos yang saat ini digunakan layanan Anda di pojok kanan atas halaman.

Perintah

  1. Sambungkan ke instans dengan menggunakan MongoDB Shell.

  2. Lihat jumlah koneksi.

    Jalankan perintah db.serverStatus().connections.

    mgset-123456:PRIMARY> db.serverStatus().connections
    {
            "current" : 1,
            "available" : 999,
            "internal_current" : 10,
            "internal_available" : 990,
            "totalCreated" : 632
    }             

    Deskripsi parameter:

    • "current": jumlah koneksi yang telah terbentuk.

    • "available": jumlah koneksi yang tersedia.

  3. Tanyakan sumber koneksi saat ini.

    1. Beralih ke database admin.

      use admin
    2. Jalankan perintah db.runCommand({currentOp: 1, $all: true}).

      mgset-123456:PRIMARY> db.runCommand({currentOp: 1, $all:[{"active" : true}]})                    

    Analisis output untuk mengidentifikasi IP sumber dan jumlah koneksi per klien. db.currentOp().

Membatasi koneksi client

Tambahkan &maxPoolSize=<integer> ke URI Connection String untuk membatasi ukuran kolam. Contoh berikut menghubungkan dengan MongoDB Shell dan mengatur kolam menjadi 10 koneksi (akun: test, database auth: admin):

mongosh "mongodb://test:****@dds-bp19f409d7512****-pub.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****-pub.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-6108****&maxPoolSize=10"
Catatan

Untuk membatasi ukuran kolam dalam bahasa lain, periksa dokumentasi MongoDB Drivers.

Menangani batas koneksi

Anda dapat memulai ulang instans, komponen, atau node-nya untuk melepaskan semua koneksi secara sementara.

Penting

Saat Anda restart instans, nodenya direstart secara berurutan. Setiap node mengalami disconnection sementara sekitar 30 detik. Jika instans berisi banyak koleksi (lebih dari 10.000), disconnection bisa lebih lama. Sebelum restart instans, rencanakan dengan matang dan pastikan aplikasi Anda memiliki mekanisme reconection.

Setelah restart, lakukan penyesuaian berikut untuk mencegah pengulangan:

Karakter khusus dalam kredensial

Koneksi gagal jika nama akun atau password dalam string koneksi berisi karakter khusus yang tidak di-escape seperti !@#$%^&*()_+=.

Solusi: Lakukan escape terhadap karakter khusus dalam string koneksi. Tabel berikut menjelaskan aturan encoding.

! : %21
@ : %40
# : %23
$ : %24
% : %25
^ : %5e
& : %26
* : %2a
( : %28
) : %29
_ : %5f
+ : %2b
= : %3d

Contoh: Jika password adalah ab@#c, Anda harus melakukan escape terhadap karakter khusus dalam string koneksi. Password yang di-escape adalah ab%40%23c.

Menentukan database otentikasi

Akun database harus diautentikasi terhadap database tempat akun tersebut dibuat.

Asumsikan bahwa username dan password keduanya adalah test, dan akun test termasuk dalam database testdb.

Titik akhir berdaya tinggi

Dalam URI ConnectionString atau URI ConnectionString read-only, atur authSource ke database tempat akun dibuat. Jika dihilangkan, <database> dalam URI digunakan untuk otentikasi.

Contoh:

  • Setelah akun test diautentikasi terhadap database testdb, instans beralih ke database <database>.

mongosh "mongodb://test:test@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/<database>?replicaSet=<replicaSet_value>&authSource=testdb"
  • Setelah akun test diautentikasi terhadap database testdb, instans beralih ke database testdb.

mongosh "mongodb://test:test@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/testdb?replicaSet=<replicaSet_value>"

Titik akhir single-node

Anda dapat menjalankan salah satu perintah berikut untuk login:

mongosh --host $myhost --port $myport -u test -p test --authenticationDatabase testdb

atau

    mongosh --host $myhost --port $myport
    mongo> use testdb
    mongo> db.auth("test", "test")

Rincian parameter endpoint: Menyambungkan ke instans set replika dan Menyambungkan ke instansi kluster sharded.

Bahasa client yang didukung

ApsaraDB for MongoDB sepenuhnya kompatibel dengan MongoDB dan mendukung semua client MongoDB resmi.

Bahasa yang didukung meliputi C, C++, C#, Java, Node.js, Python, PHP, dan Perl (dokumentasi resmi).

Untuk contoh kode, lihat topik berikut:

Catatan

Untuk memastikan otentikasi yang tepat saat menghubungkan ke instans ApsaraDB for MongoDB, gunakan driver MongoDB versi 3.0 atau yang lebih baru.

Akses tanpa password

ApsaraDB for MongoDB tidak lagi mendukung pengaktifan akses tanpa password melalui VPC.

Jika akses tanpa password sudah diaktifkan, Anda dapat menonaktifkannya secara permanen. Nonaktifkan akses tanpa password melalui jaringan pribadi.

Mongo Shell di Windows

  • Unduh dan instal MongoDB Shell dari halaman unduhan MongoDB Shell.

  • Gunakan MongoDB Shell.

    • Buka aplikasi Command Prompt.

    • Hubungkan ke instans ApsaraDB for MongoDB.

      Contoh:

      mongosh "mongodb://test:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-6108****"    

      Parameter string koneksi: Koneksi ke instans set replika dan Koneksi ke instansi kluster sharded.

Skenario koneksi umum