Tüm Ürünler
Search
Belge Merkezi

ApsaraDB for MongoDB:Bağlantı ve ağ sorunlarını giderme

Son Güncelleme:Oct 03, 2026

ApsaraDB for MongoDB örneklerinde oluşan bağlantı hatalarını tanılayın ve düzeltin. Hızlı çözümler için Yaygın hatalar bölümüne bakın veya kök nedeni sistematik olarak belirlemek için Sorun giderme adımları kısmını takip edin.

Sorun giderme adımları

1. Adım: Ağ bağlantısını kontrol etme

Sorun giderme yöntemi

Aşağıdaki komutları kullanarak ApsaraDB for MongoDB örneğine bağlantıyı test edin.

  • ping <domain> komutunu çalıştırın. Örneğin, ping dds-xxxx.mongodb.rds.aliyuncs.com komutunu çalıştırabilirsiniz.

    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

    Bu çıktı, istemcinin ApsaraDB for MongoDB örneğine erişebildiğini doğrular.

  • telnet <domain> <port> komutunu çalıştırın. Örneğin, telnet dds-xxxx.mongodb.rds.aliyuncs.com 3717 komutunu çalıştırabilirsiniz.

    root@mongotest:~# telnet xxx.mongodb.rds.aliyuncs.com 3717
    Trying xxx...
    Connected to xxx.mongodb.rds.aliyuncs.com.
    Escape character is '^]'.

    Bu çıktı, DNS çözümlemesinin başarılı olduğunu ve 3717 numaralı bağlantı noktasına erişilebildiğini doğrular.

Kontrol listesi

Ağ testi başarısız olursa aşağıdaki öğeleri kontrol edin.

Örnek durumunu kontrol edin. Örnek Running durumunda olmalıdır.

İzin listesi ayarlarını kontrol edin. İstemcinin IP adresi ApsaraDB for MongoDB örneğinin izin listesine eklenmelidir.

  • Nasıl kontrol edilir:

    Örneğin izin listesine geçici olarak 0.0.0.0/0 ekleyin. Bu değişikliği yaptıktan sonra örneğe bağlanabiliyorsanız orijinal izin listesi ayarları hatalıdır.

    Önemli

    0.0.0.0/0 IP adresi, herhangi bir cihazın ApsaraDB for MongoDB örneğine erişmesine olanak tanır ve bu durum bir güvenlik riski oluşturur. Bu IP adresini yalnızca test amacıyla kullanın ve test tamamlandıktan hemen sonra izin listesinden kaldırın.

  • Çözüm:

    Doğru istemci IP adresini izin listesine ekleyin. İstemcinizin genel IP adresini bulmak için SSS bölümüne bakın.

Ağ türünü ve uç noktayı kontrol edin. Ağ türünüz (özel veya genel) için doğru uç noktayı kullanın.

ApsaraDB for MongoDB konsolu üzerinde oturum açın ve Database Connection sayfasındaki uç noktaları görüntüleyin.

2. Adım: Yetkilendirme ve kimlik doğrulama

Hesap adını ve parolayı doğrulayın ve parolada özel karakter olup olmadığını kontrol edin.

  • Sağlanan hesap adı ve parolanın doğru olduğundan emin olun.

  • Parolayı değiştirin. Parolayı değiştirmeniz gerekiyorsa bkz. Parola sıfırlama.

    Veri Yönetimi Hizmeti (DMS) kullanarak ApsaraDB for MongoDB örneğine bağlandıktan sonra parolayı değiştirirseniz DMS console gidin, hedef örneği sağ tıklayın ve tekrar oturum açmak için Edit seçeneğini belirleyin.

  • Özel karakterler. MongoDB Kabuğu veya uygulama kodu kullanarak bir ApsaraDB for MongoDB örneğine bağlanırken hesap adı veya parola içindeki !@#$%^&*()_+= gibi özel karakterlerin kaçış dizilerini kullanmanız gerekir. Kullanıcı adı veya paroladaki özel karakterlerden kaynaklanan bağlantı hatasını nasıl çözerim?.

Kimlik doğrulama veritabanını kontrol edin. Bir veritabanı hesabı, ait olduğu veritabanına karşı kimlik doğrulamasından geçirilmelidir.

Örnek uç noktasını kontrol edin. Yazma işlemi gerektiren bir çoğaltma kümesi örneği için ConnectionString URI uç noktasını kullanarak bağlanmanızı öneririz.

  • Belirti: Uç nokta değiştirilmemiş olsa da örneğe erişim aniden kesilir.

  • Neden: Yalnızca birincil düğüm yazma işlemlerini gerçekleştirebilir. Uygulamanız daha önce birincil düğümün uç noktasını kullanarak bağlıysa bir yük devretme işlemi bağlı düğümü ikincil bir düğüme dönüştürerek yazma işlemlerinin başarısız olmasına neden olabilir.

  • Çözüm:

    • Üretim ortamları için uygulamanızın veritabanına ConnectionString URI kullanarak bağlanmasını öneririz. Bu sayede bir düğüm arızalandığında okuma ve yazma işlemleri yük devretmeden etkilenmez. Uç nokta ayrıntıları için aşağıdaki konulara bakın:

    • Düğüm rollerini manuel olarak değiştirin. Tek düğüm uç noktasına karşılık gelen düğümü birincil düğüm olarak yükseltin.

    Geçici bağlantı kesintilerinden otomatik olarak kurtulmak için uygulamanızda yeniden bağlanma mantığı ve özel durum işleme mekanizmaları uygulayın.

3. Adım: Diğer kontroller

Örnek performansının iş gereksinimlerinizi karşılayıp karşılamadığını kontrol edin.

Üçüncü taraf araçları kontrol edin.

Navicat veya Compass gibi üçüncü taraf bir araç ApsaraDB for MongoDB örneğinize bağlanamıyorsa sorun yanlış örnek veya araç ayarlarından kaynaklanıyor olabilir. Sorunu gidermek için şu adımları izleyin:

  1. Bağlantıyı MongoDB Kabuğu kullanarak test edin.

    Örneğe yüksek kullanılabilirliğe sahip ConnectionString URI'sini kullanarak MongoDB Kabuğu ile bağlanmanızı öneririz.

  2. Test sonucuna göre sorunu giderin.

    • Bağlantı başarılı: Örnek erişilebilir durumda. Sorun muhtemelen üçüncü taraf aracındaki yanlış ayarlardan kaynaklanmaktadır. Aracın yapılandırmasını kontrol edin.

    • Bağlantı başarısız: MongoDB Kabuğu bağlanamıyorsa örnek ayarları yanlış olabilir. Ağ bağlantısını, yetkilendirmeyi, kimlik doğrulamayı ve diğer ayarları kontrol etmek için bu konudaki adımları izleyin.

Yaygın hatalar

Hata mesajı

Neden ve çözüm

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

Örnek bağlantı sınırına ulaşmış olabilir.

Çözüm:

  1. Bağlantıların tükenip tükenmediğini kontrol edin. Bağlantı sayısını nasıl sorgularım?.

  2. Bağlantı kullanımını optimize edin. Örneğime yapılan bağlantı sayısı sınıra ulaştığında ne yapmalıyım?.

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

MongoDB sürücüsü bekleme kuyruğu dolu; bunun nedeni büyük olasılıkla yetersiz boyutlandırılmış bir bağlantı havuzu veya yüksek eşzamanlılıktır.

Çözüm:

  1. Uygulamadaki bağlantı havuzu yapılandırmasını kontrol edin. Havuzun uygun şekilde boyutlandırıldığından emin olun. İstemci bağlantı sayısını nasıl sınırlarım?.

  2. Sorun devam ederse ApsaraDB for MongoDB örneğine yapılan bağlantıların tükenip tükenmediğini kontrol edin:

    1. Bağlantı sayısını nasıl sorgularım?

    2. Örneğime yapılan bağlantı sayısı sınıra ulaştığında ne yapmalıyım?

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

Aşırı eşzamanlı bağlantılar mevcut oturumları tüketebilir.

Çözüm:

  1. Tükenen bağlantılardan kaynaklanan bağlantı hatasını giderin.

    1. Bağlantı sayısını nasıl sorgularım?

    2. Örneğime yapılan bağlantı sayısı sınıra ulaştığında ne yapmalıyım?

  2. Bağlantı sayısı normal ise örneğin diğer performans ölçümlerinin iş gereksinimlerinizi karşılayıp karşılamadığını kontrol edin.

    1. Örnek türünün iş gereksinimlerinizi karşılayıp karşılamadığını belirlemek için CPU ve bellek gibi kaynak kullanımını kontrol etmek üzere düğüm izleme özelliğini kullanın.

    2. Örnek türü iş yükü için yetersizse yoğun saatler dışında örnek yapılandırmasını değiştirin.

  • getaddrinfo failed.

  • No suitable servers found (serverSelectionTryOnce set).

Örnek uç noktasının doğru olduğunu doğrulayın:

  • 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.

Bir ECS örneği özel ağ üzerinden bir ApsaraDB for MongoDB örneğine bağlanamıyor.

Çözüm:

  1. İzin listesi ayarlarını kontrol edin. ECS örneğinin özel IP adresinin ApsaraDB for MongoDB örneğinin izin listesine eklendiğinden emin olun.

  2. ECS örneği ile ApsaraDB for MongoDB örneğinin ağ üzerinden birbirleriyle iletişim kurabildiğinden emin olun.

    Aynı VPC'deki ECS ve ApsaraDB for MongoDB örnekleri özel ağ üzerinden doğrudan bağlanabilir. Farklı VPC'lerde bulunuyorlarsa aşağıdaki yöntemlerden birini kullanın:

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',...}

Verinin yazıldığı düğüm birincil düğüm değil.

Neden: Yazma işlemleri yalnızca birincil düğümde gerçekleştirilebilir. Uygulamanız daha önce birincil düğümün uç noktasını kullanarak bağlıysa bir yük devretme işlemi bağlı düğümü ikincil bir düğüme dönüştürerek yazma işlemlerinin başarısız olmasına neden olabilir.

Çözüm:

  • Üretim ortamları için uygulamanızın veritabanına ConnectionString URI kullanarak bağlanmasını öneririz. Bu sayede bir düğüm arızalandığında okuma ve yazma işlemleri yük devretmeden etkilenmez. Uç nokta ayrıntıları için aşağıdaki konulara bakın:

  • Düğüm rollerini manuel olarak değiştirin. Tek düğüm uç noktasına karşılık gelen düğümü birincil düğüm olarak yükseltin.

Geçici bağlantı kesintilerinden otomatik olarak kurtulmak için uygulamanızda yeniden bağlanma mantığı ve özel durum işleme mekanizmaları uygulayın.

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

Disk alanının tükenmesi örneği kilitlemiş.

Çözüm: Disk alanı tükenmesinden kaynaklanan örnek kilitleme veya yazma hatalarını çözme.

(AuthenticationFailed) Authentication failed.

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

Veritabanı hesabının parolasında !@#$%^&*()_+= gibi özel karakterler bulunuyor.

Çözüm: Kullanıcı adı veya paroladaki özel karakterlerden kaynaklanan bağlantı hatasını nasıl çözerim?.

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

ApsaraDB for MongoDB replSetGetConfig komutunu desteklemez. ApsaraDB for MongoDB'deki komut sınırlamaları.

SSS

Bağlantıları sorgulama

Maksimum bağlantı sayısı örnek türüne göre değişir.

Not

Bağlantı sınırı düğüm başına uygulanır. Örneğin, 1 vCPU ve 2 GB belleğe sahip üç düğümlü bir çoğaltma kümesi örneği hem birincil düğümde hem de her ikincil düğümde en fazla 500 bağlantıya izin verir. Gizli düğüm trafiğe hizmet vermez.

Konsol

  1. ApsaraDB for MongoDB Çoğaltma Kümesi Örnekleri sayfasına veya ApsaraDB for MongoDB Parçalanmış Küme Örnekleri sayfasına gidin. Üst gezinme çubuğunda bir bölge seçin. Ardından hedef örneğin Kimlik numarasını tıklayın.

  2. Sol gezinme bölmesinde Monitoring Information seçeneğini tıklayın.

  3. Monitoring Information sayfasında örnek için Connections bilgilerini görüntüleyin.

    Örnek bir parçalanmış küme örneği ise sayfanın sağ üst köşesinde hizmetinizin şu anda kullandığı Mongos öğesini seçmeniz gerekir.

Komut

  1. MongoDB Kabuğu kullanarak örneğe bağlanma.

  2. Bağlantı sayısını görüntüleyin.

    db.serverStatus().connections komutunu çalıştırın.

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

    Parametre açıklaması:

    • "current": kurulmuş bağlantı sayısı.

    • "available": kullanılabilir bağlantı sayısı.

  3. Geçerli bağlantı kaynaklarını sorgulayın.

    1. admin veritabanına geçiş yapın.

      use admin
    2. db.runCommand({currentOp: 1, $all: true}) komutunu çalıştırın.

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

    Kaynak IP'yi ve istemci başına bağlantı sayısını belirlemek için çıktıyı analiz edin. db.currentOp().

İstemci bağlantılarını sınırlama

Havuz boyutunu sınırlamak için ConnectionString URI'sine &maxPoolSize=<integer> ekleyin. Aşağıdaki örnek havuzu 10 bağlantıya ayarlar (hesap: test, auth veritabanı: 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"
Not

Diğer diller için havuz boyutunu sınırlamak üzere MongoDB Sürücüleri belgelerine bakın.

Bağlantı sınırını yönetme

Tüm bağlantıları geçici olarak serbest bırakmak için örneği, bileşenlerini veya düğümlerini yeniden başlatabilirsiniz.

Önemli

Bir örneği yeniden başlattığınızda düğümleri sırayla yeniden başlatılır. Her düğüm yaklaşık 30 saniye süren geçici bir bağlantı kesintisi yaşar. Örnek çok sayıda koleksiyon (10.000'den fazla) içeriyorsa bağlantı kesintisi daha uzun sürebilir. Örneği yeniden başlatmadan önce buna göre planlama yapın ve uygulamanızın bir yeniden bağlanma mekanizması bulunduğundan emin olun.

Yeniden başlatmadan sonra tekrarlanmasını önlemek için aşağıdaki adımları uygulayın:

Kimlik bilgilerindeki özel karakterler

Bağlantı dizesindeki hesap adı veya parola !@#$%^&*()_+= gibi kaçış dizisi kullanılmayan özel karakterler içeriyorsa bağlantılar başarısız olur.

Bağlantı dizesindeki özel karakterlere kaçış dizisi uygulayın. Aşağıdaki tabloda kodlama kuralları listelenmiştir.

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

Örnek: Parola ab@#c ise bağlantı dizesindeki özel karakterlere kaçış dizisi uygulamanız gerekir. Kaçış dizisi uygulanmış parola ab%40%23c şeklindedir.

Kimlik doğrulama veritabanını belirtme

Bir veritabanı hesabı oluşturulduğu veritabanına karşı kimlik doğrulamasından geçirilmelidir.

Kullanıcı adı ve parolanın her ikisinin de test olduğunu ve test hesabının testdb veritabanına ait olduğunu varsayalım.

Yüksek kullanılabilirlik uç noktası

Bir ConnectionString URI'sinde veya salt okunur ConnectionString URI'sinde authSource parametresini hesabın oluşturulduğu veritabanına ayarlayın. Atlanırsa URI'deki <database> kimlik doğrulama için kullanılır.

Örnekler:

  • test hesabı testdb veritabanına karşı kimlik doğrulamasından geçirildikten sonra örnek <database> veritabanına geçer.

mongosh "mongodb://test:test@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/<database>?replicaSet=<replicaSet_value>&authSource=testdb"
  • test hesabı testdb veritabanına karşı kimlik doğrulamasından geçirildikten sonra örnek testdb veritabanına geçer.

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

Tek düğüm uç noktası

Oturum açmak için aşağıdaki komutlardan birini çalıştırabilirsiniz:

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

veya

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

Uç nokta parametre ayrıntıları: Çoğaltma kümesi örneğine bağlanma ve Parçalanmış küme örneğine bağlanma.

Desteklenen istemci dilleri

ApsaraDB for MongoDB, MongoDB ile tam uyumludur ve tüm resmi MongoDB istemcilerini destekler.

Desteklenen diller arasında C, C++, C#, Java, Node.js, Python, PHP ve Perl yer alır (resmi belgeler).

Örnek kodlar için aşağıdaki konulara bakın:

Not

Bir ApsaraDB for MongoDB örneğine bağlanırken uygun kimlik doğrulamayı sağlamak için MongoDB sürücüsünün 3.0 veya sonraki bir sürümünü kullanın.

Parolasız erişim

ApsaraDB for MongoDB artık VPC üzerinden parolasız erişimi etkinleştirmeyi desteklememektedir.

Parolasız erişim zaten etkinleştirilmişse bunu kalıcı olarak devre dışı bırakabilirsiniz. Özel ağ üzerinde parolasız erişimi devre dışı bırakma.

Windows'ta Mongo Kabuğu

Yaygın bağlantı senaryoları