Alipaşa Mah. Yeni Hükümet Cad. No:14/110, Tokat 0 356 214 70 65 bilgi@sur.com.tr Online mağaza English

MySQL / MariaDB "Too many connections" hatası: nedenleri ve çözümü

Web siteniz veya uygulamanız aniden "Too many connections" hatası vermeye başladı. Bu hata, veritabanı sunucusunun izin verilen eşzamanlı bağlantı sayısına ulaştığını gösterir. Nedenlerini ve kalıcı çözümleri anlatıyoruz.

Sorun-Çözüm 3 dk okuma

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.

Too many connections hatasının nedenleri ve çözümleri
Bağlantı sayısını artırmadan önce bağlantıların neden biriktiğini bulun.

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ü?
Geçici rahatlama sağlar, ancak her bağlantı bellek tüketir. Asıl neden giderilmeden yükseltmek sunucuyu bellek sorunlarına sürükleyebilir.
Paylaşımlı hostingde bu ayarı değiştirebilir miyim?
Genellikle hayır. Hosting firması kullanıcı başına sınır koyar. Sorun sürekliyse uygulama veya barındırma türü gözden geçirilmelidir.
Hata yalnızca belirli saatlerde çıkıyor. Neden?
Trafik artışı, zamanlanmış görevler, yedekleme veya bot taramaları o saatlerde yük oluşturuyor olabilir.

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…

Web Yazılım Hizmetleri
Blog

İlgili yazılar