Web sitesi veya uygulama bir anda çalışmayı bırakıyor ve ekranda "Too many connections" veya "SQLSTATE[HY000] [1040]" hatası görünüyor. Bu hata, MySQL veya MariaDB sunucusunun izin verilen eşzamanlı bağlantı sayısına ulaştığını ve yeni bağlantı kabul etmediğini gösterir.
Neden olur?
Veritabanı sunucusu, aynı anda açık olabilecek bağlantı sayısını max_connections ayarıyla sınırlar. Bu sınıra ulaşılmasının birkaç yaygın nedeni vardır.
1. Yavaş sorgular
En sık neden budur. Bir sorgu uzun sürdüğünde bağlantı açık kalır; bu sırada yeni ziyaretçiler yeni bağlantılar açar. Birkaç yavaş sorgu, kısa sürede tüm bağlantı havuzunu tüketebilir. Eksik indeksler, büyük tablolar üzerinde tam tarama yapan sorgular ve kilitlenen tablolar başlıca nedenlerdir. İndeksler için indeks nedir yazımıza bakabilirsiniz.
2. Kapanmayan bağlantılar
Uygulama kodunda bağlantıların işi bittiğinde kapatılmaması veya kalıcı bağlantıların yanlış yapılandırılması, boşta bekleyen bağlantıların birikmesine yol açar. Bu bağlantılar wait_timeout süresi dolana kadar sunucuda kalır.

3. Ani trafik ve botlar
Bir kampanya, sosyal medya paylaşımı veya agresif bot taramaları ani trafik artışı yaratabilir. Önbellekleme olmayan sitelerde her sayfa görüntülemesi veritabanına gider. Sayfa önbelleği ve bot sınırlama, veritabanı yükünü büyük ölçüde azaltır.
4. Düşük limit
Bazı kurulumlarda varsayılan limit, sunucunun kaldırabileceğinden düşük olabilir. Limit yükseltilebilir; ancak her bağlantı bellek tükettiği için sunucu kaynakları dikkate alınmalıdır.
Teşhis
Hata anında açık bağlantıların listesi (process list), hangi sorguların ne kadar süredir çalıştığını gösterir. Yavaş sorgu günlüğü açılarak sorunlu sorgular tespit edilebilir. Bağlantı sayısının zaman içindeki değişimini izlemek, sorunun hangi saatlerde ve hangi olayla başladığını ortaya çıkarır.
Barındırma türü
Paylaşımlı hostingde bu ayarlara erişim sınırlıdır. Trafiği büyüyen siteler için VPS veya ayrı sunucu değerlendirilebilir; ayrıntılar için hosting mi VPS mi yazımıza bakabilirsiniz. Site tamamen açılmıyorsa site açılmıyor yazımıza bakabilirsiniz.
Kalıcı önlemler
Uygulamada bağlantı havuzu kullanmak, sayfa ve sorgu önbelleği eklemek, yavaş sorguları düzenli olarak gözden geçirmek ve bağlantı sayısı için izleme ile uyarı tanımlamak sorunun tekrarını önler. Yönetim panelleri ve arka plan görevleri gibi ağır işlemlerin yoğun saatlerin dışına alınması da yükü dengeler.
Sur Bilgisayar olarak web uygulamalarında veritabanı performansı, sorgu iyileştirme ve sunucu yapılandırması konusunda destek veriyoruz. Ayrıntılar için web yazılım hizmetleri sayfamıza bakabilirsiniz.
Sık sorulan sorular
max_connections değerini çok yükseltmek çözüm mü?
Paylaşımlı hostingde bu ayarı değiştirebilir miyim?
Hata yalnızca belirli saatlerde çıkıyor. Neden?
Bu konuda destek mi lazım?
Kurumsal portal, intranet/extranet, e-ticaret ve web tabanlı iş uygulamaları geliştiriyoruz. 2005’ten beri kamu kurumları ve firmalara özel…
