Bilgi Bankası
MongoDBBağlantı ve erişim 14 dk 14.06.2026

MongoDB bağlantı havuzu ve server selection timeout: uygulama neden bağlanamıyor?

MongoDB bağlantı hataları bazen veritabanı kapalıymış gibi görünür; ama gerçek neden yanlış replica set adı, DNS, TLS, aşırı küçük bağlantı havuzu veya uygulamanın gereksiz yeni client açması olabilir.

Bu yazı sana şu durumda yardımcı olur
  • MongoServerSelectionError görülüyor
  • server selection timed out after 30000 ms
  • uygulama yoğun saatte MongoDB’ye bağlanamıyor
  • maxPoolSize artırılınca sorun kısa süre azalıyor
  • bazı podlar bağlanırken bazıları bağlanamıyor
Yazıyı bitirince

MongoDB bağlantı sorununu ağ/TLS, replica set keşfi, bağlantı havuzu ve uygulama client yaşam döngüsü olarak ayırabileceksiniz. Hangi ayarın geçici rahatlama, hangisinin kalıcı çözüm olduğunu daha net göreceksiniz.

TürkDB açısından ürünleşme notu

Bu bölüm, TürkDB’nin ilgili problemi hangi ürün ilkeleri ve kontrol noktalarıyla ele alacağını anlatır. Kapsam, gerçek iş yükü ve ihtiyaçla birlikte netleşir.

TürkDB MongoDB için bağlantı bilgisi, TLS ve cluster durumunu tek bağlamda göstermeyi hedefler. Yine de uygulamanın MongoClient kullanım biçimi ürünün dışında kalan kritik bir parçadır; pilotta bağlantı havuzu davranışı mutlaka gerçek trafikle denenmelidir.

Server selection timeout ne demektir?

MongoDB sürücüsü bir sorguyu göndermeden önce uygun bir sunucu seçer. Yazma için primary, okuma için tercih ettiğiniz read preference davranışına uygun bir node gerekir. Sürücü uygun node bulamazsa server selection timeout hatası verir.

Bu hata tek başına “MongoDB kapalı” anlamına gelmez. Sürücü clusterı keşfedemiyor, TLS doğrulamasında takılıyor, replica set adı uyuşmuyor veya bağlantı havuzu tamamen dolmuş olabilir.

  • Replica set adı bağlantı dizesinde yanlış olabilir.
  • DNS bazı uygulama podlarında farklı çözümleniyor olabilir.
  • TLS parametreleri ortamdan ortama değişmiş olabilir.
  • Uygulama her istekte yeni MongoClient oluşturuyor olabilir.
  • Bağlantı havuzu küçük veya bekleme kuyruğu yetersiz olabilir.

MongoClient yaşam döngüsünü kontrol edin

Node.js, Java, Python fark etmez: MongoDB client nesnesi genellikle uygulama boyunca yeniden kullanılmalıdır. Her HTTP isteğinde yeni client oluşturmak kısa süre çalışır, sonra hem uygulamayı hem veritabanını yorar.

Bağlantı havuzu ayarı sorunları saklamak için değil, gerçek eşzamanlılık ihtiyacını karşılamak için yapılır. maxPoolSize değerini büyütmek, kötü client yaşam döngüsünü düzeltmez.

Node.js tarafında tek MongoClient kullanımı

mongo-client.ts
import { MongoClient } from "mongodb"

const uri = process.env.MONGODB_URI || ""
const client = new MongoClient(uri, {
  maxPoolSize: 50,
  minPoolSize: 5,
  serverSelectionTimeoutMS: 5000,
  connectTimeoutMS: 5000,
})

export async function getDb() {
  if (!client.topology?.isConnected()) {
    await client.connect()
  }
  return client.db("app")
}

Örnek kavramsaldır; kullandığınız sürücü sürümüne göre bağlantı durumu kontrolü değişebilir.

Havuz doldu mu, cluster mı erişilemiyor?

Bağlantı havuzu dolduğunda uygulama tarafında bekleme ve zaman aşımı artar. Cluster erişilemiyorsa ise sürücü uygun sunucu seçemez. Bu iki durum kullanıcıya aynı hata gibi dönebilir.

Ayırmak için uygulama metriklerine ve MongoDB tarafındaki bağlantı sayısına birlikte bakın. Sadece veritabanı bağlantı sayısı değil, uygulamanın kaç client ve kaç pool açtığı da önemlidir.

MongoDB bağlantı sayısını görme

mongo-connections.js
db.serverStatus().connections

// Örnek alanlar:
// current: açık bağlantı sayısı
// available: kullanılabilir bağlantı kapasitesi
// totalCreated: süreç boyunca oluşturulan toplam bağlantı

Bağlantı hatasında güvenlik ayarlarını gevşetmeyin

TLS veya izin listesi kaynaklı bir bağlantı hatasında ilk refleks güvenliği kapatmak olmamalı. Doğru yaklaşım hangi katmanın sorun çıkardığını anlamaktır: DNS mi, TLS mi, IP erişimi mi, kullanıcı/parola mı, replica set keşfi mi?

Aynı bağlantı dizesiyle resmi istemciden bağlanmak, sorunun uygulama kodunda mı bağlantı yolunda mı olduğunu ayırmak için hâlâ en pratik yöntemlerden biridir.

Devam etmek istersen

Sorunu motor bazında derinleştirin

Benzer belirtiler farklı motorlarda farklı nedenlere dayanır; yayınlanan tüm rehberleri ana sayfadan takip edebilirsiniz.

Tüm makaleler